扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性。
目前创新互联已为近千家的企业提供了网站建设、域名、网络空间、网站托管维护、企业网站设计、东城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性,如果对象很多的情况下会浪费内存空间。
可通过__slots__方法告诉python不要使用字典,而且只给一个固定集合的属性分配空间
class Foo(object): __slots__ = ("x","y","z") def __init__(self,x,y): self.x = x self.y = y self.z = None def tell_info(self,name): return getattr(self,name) c = Foo(10,20) # 设置和获取__slots__中设置的可访问实例属性 print(c.tell_info("x")) # 结果:10 c.z=50 print(c.tell_info("z")) # 结果:50 # 设置一个不在__slots__中存在的属性,会报错 c.e = 70 # AttributeError: 'Foo' object has no attribute 'e' # 访问对象.__dict__ 也会直接报错 print(c.__dict__) # AttributeError: 'Foo' object has no attribute '__dict__'
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流