您的位置:首页 > 编程语言 > Python开发

python(3) class介绍

2013-03-15 12:30 274 查看
http://docs.python.org/2/tutorial/classes.html

从C++的角度来讲,所有的python的成员都是public的,且所有的函数都是virtual的,除了在申明变量的时候以"__"双划线这个符号开头,就是说明是private的。

1)对象的copy赋值

python同样有aliasing的问题,aliasing就相当于指针指向同一个对象, 下面一段代码介绍了别名和正真copy的区别,一般对象的赋值就是直接用别名来完成的,基本类型除外。

shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist # mylist is just another name pointing to the same object!
mylist = shoplist[:] # make a copy by doing a full slice
如果要实现正真的copy,就参考下面的代码,实现可浅copy和深copy

>>> a = [[1], ['a'], ['A']]
>>> import copy
>>> b = copy.deepcopy(a)
>>> b
[[1], ['a'], ['A']]
>>> c = copy.copy(a)
>>> c
[[1], ['a'], ['A']]
>>> a[1].append('b')
>>> a
[[1], ['a', 'b'], ['A']]
>>> b
[[1], ['a'], ['A']]
>>> c
[[1], ['a', 'b'], ['A']]


2)class的定义

>>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
这个class还有一个构造函数__init__,这个函数当系统申明对象的时候自动调用,比如 x=Complex(1,2), 另外我们看到类的function还有一个特点在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值,self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。

3) class 的继承

class支持多重继承

class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: