0 python getter setter metadata properties
所以我有以下代码,我试图添加某种类型的元数据,我想这是一个类的属性.我的想法是,我会有一个getter/setter,其中getter将返回一个float/int/string私有变量,但会返回一些额外的数据,例如详细的名称.
这完全有效,直到我使用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__
Run Code Online (Sandbox Code Playgroud)
在python 2中,属性仅适用于新式类(派生自object):
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)
Run Code Online (Sandbox Code Playgroud)