使用__dict__
存取任意数据
类的静态函数、类函数、普通函数、全局变量以及内置属性都是放在类的__dict__
属性中,直接操作__dict__
属性可以直接向类的实例中动态的添加成员。在发生继承时,子类有自己的__dict__
,父类也有自己的__dict__
,属于子类的全局变量和函数将放置在子类的__dict__
中,父类的放置在父类的__dict__
中,父类的__dict__
不会影响子类的__dict__
。
__dict__
是一个字典类型,可以直接使用字典的常规操作来处理。配合魔术方法__getattr__
和__setattr__
可以做到在类中存取任意数量的数据。
以下给出一个可自由保存数据的类的示例。
class Storage:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __getattr__(self, name):
if name in self.__dict__.keys():
return self.__dict__.get(name)
else:
return None
def __setattr__(self, key, value):
self.__dict__.update({key: value})
sample = Storage({"id": 0, "name": "sample"})
sample.create_time = "1970-1-1"
sample.create_time = "1970-1-2"
print(sample)