面向对象的进阶:
成员:
字段 静态字段(没一个对象都有一份),普通字段(每一个对象都不同的数据)
方法 静态方法(无需使用对象封装的内容),l类方法,普通方法(使用对象中的数据)
特性 普通特性(将方法伪造成字段)
快速判断,类执行,对象执行:
self,对象调用
无self,类调用
@xxx.setter #特性里边的一个方法,修改旧的值重新赋一个新的值 注意上下两函数名必须相同 @property #特性,将方法伪造成字段 @staticmethod #静态方法,不用加self,可以加参数 @classmethod #类方法
成员修饰符:
私有,仅供自己使用,其他谁也不好使
在python里边成员修饰符只有两个,一个共有,一个私有。
#修饰符 class Foo: __ox = "ox" #修饰符不能外部执行,只能内部执行。 def fetch(self): print(Foo.__ox) obj = Foo() obj.fetch()
class Foo: def __init__(self): print("init") def __call__(self,*args,**kwargs) print("call") r = Foo() #在类名后边加括号执行init r() #在对象后边加括号是指行call #特殊的常用方法: __init__ __call__
——
#__getitem__ class Foo: def __getitem__(self,item) print(item) r = Foo() r["xxx"] 对象后边加个中括号就会去执行__getitem__方法,中括号里边可以自定义添加内容,对象会把内容传给item,print(item),就会把item接收到的内容给输出出来。
__setitem__ class Foo: def __setitem__(self,key,value): print(key,value) r = Foo() r["xxx"] = 123 对象后边加中括号就会执行__setitem__方法,一个key,一个value
__delitem__ class Foo: def __delitem__(self,key): print(key) r = Foo() del r["xxx"] #执行__delitem__方法,删除key
class Foo: def __iter__(self): yield 1 yield 2 yield 3 obj = Foo() for i in obj: print(i) #执行for循环对象时,自动会执行对象的iter方法,生成器