视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python程序设计入门(5)类的使用简介
2020-11-27 14:30:31 责编:小采
文档


一、类的定义和使用

python定义一个类的基本语法是:

代码如下:

class classname([基类一,基类二...]):

[def __init__(self, [agv1,agv2...]):] # 定义构造函数

def method1(self, [agv1,agv2...]): # 成员函数


使用时用:

对象实例名 = 类名(参数列表)

对象实例名.成员函数名(参数列表)

和其它语言不同之处是:

(1) python没有new关键字
(2) 成员函数必须带有 self 参数(它相当于传统语言里的 this )
(3) 成员变量不需要显式定义,不过为了方便起见,大多数人还是会在构造函数里定义,以免过于莫名其妙。
例:
代码如下:

# -*- coding: gb18030 -*-
class mycls:

def __init__(self, vl, vr):
self.l = vl
self.r = vr
def show_me(self):
print x.l, x.r

x = mycls(3, 15)
x.show_me()

二、高级应用

1、成员函数类型变量

python 可以直接把一个成员函数作为一个变量,就上面的类而言,可以这样:

代码如下:

x = mycls(3, 15)
myx = x.show_me()
print 'I am a copy! '
myx

2、继承和多继承

要继承其它类,定义时指定要继承的基类即可
class classname([基类一,基类二...]):

3、私有成员

python实际上并没有私有成员的概念,不过如果把变量名定义为 ___var (三个下划线)这样系统会自动把名称改为 _classname___var,

这个值可以用 self.___var 读取(因为会一起替换),但在外部是无法用 obj.___var 读取的。

如:
代码如下:

class test_cls:

def __init__(self):
self.___aaa = 'I am a python!'

def test_func(self):
print self.___aaa

#这种方法能输出正确结果
x = test_cls()
x.test_func()

#下面这种方法会报错!
x = test_cls()
print x.___aaa

三、迭代器 和 发生器

在 python 中,很多东西都是可以用 for 来遍历的,实际是这个东西的实现是通过迭代器或发生器来实现的

1、迭代器

代码如下:

class Reverse:
def __init__(self, data):
self.data = data
self.index = len(data)

def __iter__(self):
return self

def next(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]

#应用
for cin Reverse('spam'):
print c

这里的重点是 __iter__ 和 next 两个函数,使用 next 时,用 raise StopIteration 指定遍历结束。

2、发生器

发生器实际是用单独一个函数实现被遍历的源
在发生器函数中, 用 yield varname 返回每次被遍历的元素即可:
例:
代码如下:

def reverse(data):
for index in range(len(data)-1, -1, -1):
yield data[index]

for c in reverse('golf'):
print c

至此,python的基本语法也说得差不多了,至于其它一些隐秘的东西,需要大家实际操作去发现了。

下载本文
显示全文
专题