美文网首页
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