在python中,一切皆是对象(object),对象拥有很多属性(arrtribute)
属性分2种
类属性(class attribute):类自身定义or继承
对象属性(object attribute):该对象实例定义的
保留属性:(=对象属性??)
>>> Class1.__doc__ # 类型帮助信息 'Class1 Doc.' >>> Class1.__name__ # 类型名称 'Class1' >>> Class1.__module__ # 类型所在模块 '__main__' >>> Class1.__bases__ # 类型所继承的基类 (<type 'object'>,) >>> Class1.__dict__ # 类型字典,存储所有类型成员信息。 <dictproxy object at 0x00D3AD70> >>> Class1().__class__ # 类型 <class '__main__.Class1'> >>> Class1().__module__ # 实例类型所在模块 '__main__' >>> Class1().__dict__ # 对象字典,存储所有实例成员信息。 {'i': 1234}
对象的属性???(感觉教程写错了,应该是类属性)储存在对象的__dict__属性中。__dict__为一个词典,键为属性名,对应的值为属性本身。
class Bird: #鸟类父类 have_feater=True #属性 'have_feater': True way_of_reproduction="egg" #属性 'way_of_reproduction': 'egg' song="叽叽喳喳" #属性 'song': '叽叽喳喳' def sing(self): # 'sing': <function Bird.sing at 0x0000000001F0BB70>, print(self.song) def move(self): #'move': <function Bird.move at 0x0000000001F0BBF8>, print("飞飞飞") #属性 '__weakref__': <attribute '__weakref__' of 'Bird' objects>, #属性 '__doc__': None, #属性 '__dict__': <attribute '__dict__' of 'Bird' objects>, #属性 '__module__': '__main__ class Chicken(Bird): #鸟类子类 song="oooooo" #属性 'song': 'oooooo' def __init__(self,name): #属性 '__init__': <function Chicken.__init__ at 0x0000000001F0BC80> self.name=name def move(self): #属性 'move': <function Chicken.move at 0x0000000001F0BD08> print("跑跑跑") #属性 '__doc__': None, #属性 '__module__': '__main__' myChicken=Chicken("QQ") #属性 'name': 'QQ' #如果只有对象名,可以通过__class__得到类,然后__base__得到父类 print(myChicken.__class__.__base__) print(Bird.__dict__) print(Chicken.__dict__) print(myChicken.__dict__)