正在覆盖的Python属性
所以我有下面的代码,我正在尝试向类的属性添加某种元数据。我的想法是使用一个getter/setter,其中getter将返回一个float/int/string私有变量,但同时返回一些额外的数据,例如详细的名称 在我使用setter之前,这是非常有效的,曾经使用过的setter似乎忽略了setter和getter 有人知道为什么我所做的不起作用吗?或者是否有更好的方法来实现我的目标 非常感谢正在覆盖的Python属性,python,properties,metadata,setter,getter,Python,Properties,Metadata,Setter,Getter,所以我有下面的代码,我正在尝试向类的属性添加某种元数据。我的想法是使用一个getter/setter,其中getter将返回一个float/int/string私有变量,但同时返回一些额外的数据,例如详细的名称 在我使用setter之前,这是非常有效的,曾经使用过的setter似乎忽略了setter和getter 有人知道为什么我所做的不起作用吗?或者是否有更好的方法来实现我的目标 非常感谢 class Param(float): def __new__(self,name,value)
class Param(float):
def __new__(self,name,value):
return float.__new__(self,value)
def __init__(self,name,value):
self.__name = name
name = property(lambda self: self.__name)
class Beer:
def __init__(self, temp):
self.__T = temp
@property
def temp(self):
return Param('Beer Temperature', self.__T)
@temp.setter
def temp(self,value):
self.__T = float(value)
print b.temp.name, b.temp.__class__
print b.temp * 4.5
print b.temp.name, b.temp.__class__
b.temp = 101
print b.temp.name, b.temp.__class__
在python 2中,属性仅在以下情况下才能正常工作(从
对象派生):
在python 2中,属性仅在以下情况下才能正常工作(从对象派生):
class Beer(object):
def __init__(self, temp):
self.__T = temp
@property
def temp(self):
return Param('Beer Temperature', self.__T)
@temp.setter
def temp(self,value):
self.__T = float(value)