正在覆盖的Python属性

正在覆盖的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)

所以我有下面的代码,我正在尝试向类的属性添加某种元数据。我的想法是使用一个getter/setter,其中getter将返回一个float/int/string私有变量,但同时返回一些额外的数据,例如详细的名称

在我使用setter之前,这是非常有效的,曾经使用过的setter似乎忽略了setter和getter

有人知道为什么我所做的不起作用吗?或者是否有更好的方法来实现我的目标

非常感谢

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)