Python类的几点笔记
1. class A: def __init__(self, a, b): self.a = a self.b = b print(a, b) class B(A): def __init__(self, aa, bb): 此处最好写成 a,b因为self.a=a 父类是如此,子类亦应如此,不容易混淆 a.__init__(self, aa, bb) #如此调用等价于 super(B,self).__init__(aa,bb) print('wosinibaba') print(self.a) print(self.b) aaa = b('10', '20') 2. class person: def __init__ (self, name, age): self.name = name self.age = age class friend: def __init__(self, sex): self.sex = sex def ff(self): print('i is your friend') class man(person, friend): def __init__(self, name, age, sex): person.__init__(self, name, age) friend.__init__(self, sex) m = man('zhangsan', 20, 'boy') m.ff() print(m.sex) 多继承如果参数不一样只能分开调用,如果参数一样可以用super()函数 一个下划线开头表示保护成员 例如_name 两个下划线开头表示私有成员 例如__name 定义类的时候首字母应该大写 3. class A: '''erza erza woshi ni baba''' def __init__(self): self.name = 'erza' def __str__(self): return "<obj:%s>" % self.name print(A.__doc__) #打印第一行类的注释 print(A.__dict__) #打印所有类变量 实例调用的话是所有实例变量 print(A) #__str__方法改变打印A对象 例如此时打印<class '__main__.A'> 4. 可以把一个类封装成字典 class Dict: def __init__(self): self.data = {} def __getitem__(self, item): return self.data[item] def __setitem__(self, key, value): self.data[key] = value def __delitem__(self, key): self.data.pop(key) d = Dict() d['name'] = 'zhangsan' print(d['name']) del d['name'] print(d['name']) 5. 类的类型为 type 可以用type创建类 def __init__(self, name, age): self.name = name self.age = age def talk(): print('Wang Wang Wang!!!') Foo = type('Foo',(object,), {'__init__':__init__,'talk':talk}) f =Foo('ZhangSan', 10) print(f.age) print(f.name) 6. 反射:hasattr判断对象中是否有字符串表示的方法,getattr获得对象中字符串表示的方法,setattr在对象中添加bluck方法添加为的方法名为chocie,delattr删除字符串表示的方法 def bluck(self): print('%s is blucking!' % self.name) class A: def __init__(self, name): self.name = name def talk(self): print('wangwang!') def eat(self): print('%s is eating !' % self.name) a = A('dog') choice = input('>>:') if hasattr(a, choice): # getattr(a, choice)() func = getattr(a, choice) func() else: setattr(a, choice, bluck) #setattr添加的方法和静态方法类似,如果用到对象需要传递对象 getattr(a, choice)(a) delattr(a, 'talk') a.talk()