pass
1.继承的问题,python支持多重继承
2.构造函数,可以理解为__init__其实init更应该理解为类似@postConstruct
3.self参数,表示this,为什么传入self?为什么java不这么做,如果你看java的汇编代码就会知道,java会在调用前把this
push进去,但是python在调用的时候,并不需要传入self,因为你写的对象名本来就有了地址,估计python在调用的,直接将self等参数一起压入栈,效果是一样的,只不过python提供了现实的支持,让你更明白,更清晰,当然像我这样用惯了java和cpp的人就更不习惯:)
4.如果继承了,你必须在init中显示的自己
去调用父亲的构造函数,python是不会帮助你的,这比cpp和java的规则要好得多,感觉python更喜欢简单,清晰明了,我不做那么多magic的事情
5.创建对象 a =
A('test'),感觉更像c++对么,但是应该是在heap上分配的
6.python中的所有方法都是virtual的,或者虚函数,而且python不支持overloading
7.python中的专有方法,可能和运算符相对应,当你使用某一些运算符的时候,就会调用专用方法,这些方法是以__开头的,python定义的conversion,如果你override这些方法,就可以有类似于c++中的操作符重载的效果,几个有用的专有方法:
repr()的def __repr__(self): return repr(self.data),__repr__
是一个专用 的方法,在当调是一个专用
的方法,在当调repr(instance) 时被调用。 repr 函数是
一个内置函数,
它返回对象的字符串表示。可以用在任何上一个内置函数,它返回对象的字符串表示。python版本的toString
==号的def __cmp__
len()的__len__
__delitem__ 在调用 在调用 在调用 del instance[key]
时调用 ,你可能记得它作为时调用
,你可能记得它作为时
8.python中的==意思是equals,a is
b表示是否为同一个对象
9.在 Python 中,只有类属性可以定义在
这里数据中(static的),实例级别的数据__init__方法中。
10。关于可见性
只有public和private,是以命名来区分的,默认就是public的,如果以__开头,则表示private的,在这里专有方法(以__开头,__结尾)的除外,可应用于method,field