假设我有这样的课程:
class Test(object):
prop = property(lambda self: "property")
每当我尝试访问时,描述符优先Test().prop
。所以那将返回'property'
。如果我想访问对象的实例存储,我可以这样做:
x = Test()
x.__dict__["prop"] = 12
print(x.__dict__["prop"])
但是,如果我将课程更改为:
class Test(object):
__slots__ = ("prop",)
prop = property(lambda self: "property")
由于不再存在,我该如何做同样的事情,并访问 的内部存储x
、写入12
和读取它?x.__dict__
我对 Python 很陌生,但我理解 Python 的理念是提供完全控制,那么为什么实现细节阻止我这样做呢?
Python是否缺少可以从实例内部存储中读取的内置函数,例如:
instance_vars(x)["prop"] = 12
print(instance_vars(x)["prop"])
这会像vars
, 除了它也适用于, 和没有?__slots__
的内置类型__dict__