从方法外部访问python中的属性
假设我有以下代码:从方法外部访问python中的属性,python,Python,假设我有以下代码: class MyClass(obj): @property def product(self): return self._product def __init__(self, *args, **kwargs): self._product = kwargs.pop('product') super(MyClass, self).__init__(*args, **kwargs) field
class MyClass(obj):
@property
def product(self):
return self._product
def __init__(self, *args, **kwargs):
self._product = kwargs.pop('product')
super(MyClass, self).__init__(*args, **kwargs)
field = self._product.name
如您所见,我试图使用属性_乘积设置变量字段,但显然,我得到的错误是,
self未定义。
,但我如何才能从类中的局部变量实际访问属性?在方法之外,实例还不存在(就这一点而言,类也不存在). 那么self
指的是什么?如果希望字段
直接公开产品名称,请将其设置为另一个@属性
。假设这样做是可能的。假设您最终创建了两个MyClass实例,每个实例都有一个产品,分别名为“Widget”和“Sprocket”。MyClass.field
有什么值?答案不能是“Widget或Sprocket,取决于您使用哪个实例访问它”,因为类属性是共享的。如果想要不共享的属性,可以使用实例属性,这些属性通常在\uuuu init\uuu
中创建。如果你试图在那里引用self,你就不会得到self没有定义。你的目标是什么?您试图解决一个问题,但显然这种方法不起作用。那么,需要解决的问题是什么?