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的区别,一般对象的赋值就是直接用别名来完成的,基本类型除外。
2)class的定义
3) class 的继承
class支持多重继承
从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>
相关文章推荐
- Python3里的super()和__class__使用介绍
- Python中class的简单介绍
- Python Metaclass超类入门介绍
- 记录一个 关于 python 普通方法,静态方法和类方法 的介绍。@classmethod @staticmethod
- 简要介绍python的元编程的metaclass
- Python字符串拼接六种方法介绍
- python高级内置函数和各种推导式的介绍:一行搞定的代码
- python socket编程详细介绍
- ClassLoader 的相关介绍
- Python介绍
- Python之set介绍和使用
- 简单介绍python的赋值,浅拷贝和深拷贝
- python中的__metaclass__
- python实现class对象转换成json/字典的方法
- 《Python》参考手册(第四版)目录介绍
- python标准库介绍——16 shutil模块详解
- python标准库介绍——27 random 模块详解
- python正则表达式re模块详细介绍
- 笨方法学python-class 10 input
- Python魔法 - MetaClass