美文网首页
Python3 & __dict__属性总结

Python3 & __dict__属性总结

作者: 乘风破浪的姐姐 | 来源:发表于2020-11-23 18:31 被阅读0次

    Python3的dict属性,是一个字典(dict),它包含了该对象所有的属性。
    类的dict属性,存储 静态函数、类函数、普通函数、全局变量以及一些内置的属性。
    类的对象的dict属性,存储与该实例相关的实例属性的字典,例如:self.xxx相关的信息。
    案例:

    class Person():
        sex = None
        age = 1
        def __init__(self,name):
            self.sex = '男'
            self.age = 30
            self.name = name
        def test(self):
            print ('a normal func.')
    class Man(Person):
        sex = None
        age = 1
        def __init__(self,name):
            self.sex = '女'
            self.age = 40
            self.name = name
        def test_B(self):
            print ('func named test_B')
    person = Person('Tom')
    man = Man('Jerry')
    print (Person.__dict__)
    print (person.__dict__)
    print (person.__dict__['name'])
    print (Man.__dict__)
    print (man.__dict__)
    

    输出结果:

    {'__module__': '__main__', 'sex': None, 'age': 1, '__init__': <function Person.__init__ at 0x000001CD23CB80D0>, 'test': <function Person.test at 0x000001CD23CB8160>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
    {'sex': '男', 'age': 30, 'name': 'Tom'}
    Tom
    {'__module__': '__main__', 'sex': None, 'age': 1, '__init__': <function Man.__init__ at 0x000001CD23CB81F0>, 'test_B': <function Man.test_B at 0x000001CD23CB8280>, '__doc__': None}
    {'sex': '女', 'age': 40, 'name': 'Jerry'}
    

    从上述案例可以看出:
    类的dict属性,返回类内部所有属性和⽅法对应的字典。
    类的实例对象dict属性,返回实例属性和值组成的字典。
    当有继承关系时,父类的dict 并不会影响子类的dict
    内置的数据类型没有dict属性,例如:

     number = 3
    list = []
    dd = {}
    print(number.__dict__)
    print(list.__dict__)
    print(dd.__dict__)
    

    报错如下:


    image.png

    相关文章

      网友评论

          本文标题:Python3 & __dict__属性总结

          本文链接:https://www.haomeiwen.com/subject/pypviktx.html