在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__)