python-内置函数
构造函数
__init__
作用:在对象创建时自动调用。不需要手动调用函数,常用于初始化一些变量,属性。使用内置__init__
特殊方法
1 | class A(): |
如果B是继承与A,同时又重写了A的init方法,但是其它的方法中需要用到初始化A的数据(self.num),那么必须包含初始化A的init语句,否则会报错。因为改写的B中没有这个变量
1 | # 这样写表示在B的init方法中调用A的init方法,B中其它方法如果需要使用到self.num时就不会报错 |
上面这种写法是2.x版本写法,3.x版本写法:
1 | class B(A): |
使用到了super
函数,而且没有使用self
,优点在于有多个超类的时候只需要写一个就行。它返回一个super对象
,访问其属性时,它会在所有的超类中寻找。
其他内置方法
实现序列,要求不使用get,set方法,一个对象既可以设值,也可以取值。
1 | def check_index(key): |
函数property
这个函数就可以简化上面复杂的步骤,将set和get统一为一个属性
1 | class Juice(): |
需要特别注意的是,上面代替get与set的名称不能写count,而要使用其他的名字比如mycount
因为最终我们调用函数的时候(如果写成了count)会写c.count
,那么当他在执行get函数的时候,会返回一个self.count
。self指代的是对象自身,那么就又返回到调用函数c.count
这样就形成了递归调用。
解决方法是要么修改property封装的属性名称(mycount),要么在变量前加下划线(_count/__count)。目的就是为了不形成迭代关系。
property
中的参数顺序不能错:property(get, set, del)