这是我解决问题的方法。但我希望有一种更轻松,更美丽的方式。我还不知道关于Python的所有内容,但我没有得到任何答案 - 问题和答案是关于另一个问题。也许我看起来很糟糕,或者有一种完全不同的方法,不需要参考。我需要通过链接到属性的类,始终可以独立地接收其值,而不接收其他提醒,以及直接值。
class SomeObject:
def __init__(self):
self._someproperty =None
self.somepropertyRef=SomeObject.__dict__['someproperty'] # reference
@property # I need pass property as a parameter like a function
def someproperty(self):
return self._someproperty
@someproperty.setter
def someproperty(self, someproperty):
self._someproperty = someproperty
so = SomeObject()
# 1) example without using ref
so.someproperty="123"
temp = so.someproperty
print(temp == so.someproperty) # True
so.someproperty=0
print(temp == so.someproperty) # Of course, False!
# 2) example with using ref
temp = (so.somepropertyRef, so) # Oh...
print(temp[0].fget(temp[1]) == so.someproperty) # True. But long way...
so.someproperty="456"
print(temp[0].fget(temp[1]) == so.someproperty) # True. How to do the same easy?
答案 0 :(得分:0)
SomeObject.someproperty
是您要查找的参考。属性是具有特殊行为的类属性,其中包括从类的实例调用。
temp = (SomeObject.someproperty, so)
如果您只想访问该值,也可以将引用保存到SomeObject.someproperty.fget
。
temp = (SomeObject.someproperty.fget, so)
print(temp[0](temp[1]) == so.someproperty)
so.foo = 456
print(temp[0](temp[1]) == so.someproperty)