我想创建一个具有构造函数的myCalc类,使用get和set方法并使用属性。我理解get和set方法,但是把所有的部分放在一起很麻烦所以它执行我想要它做的事情。到目前为止我所拥有的是:
class myCalc(object):
def __init__(self):
self._ =name
def (self):
"""Get the answer doubled."""
return self._plus
def (self):
"""Get the answer squared."""
return self._times
我想让程序响应具有双重和平方对象中数字的属性。任何的意见都将会有帮助。
答案 0 :(得分:4)
属性对象具有getter,setter和deleter方法 您应该使用装饰器,如下所示:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
如果您只想要它,只需使用@property并删除其他两个
答案 1 :(得分:1)
具有doubled
和squared
属性
class myCalc(object):
def __init__(self, value):
self.value = value
def __str__(self):
return str(self.value)
def dbler(self):
return self.value*2
doubled = property(dbler)
squared = property(lambda self: self.value**2)
# equivalent with the decorator
@property
def cubed(self):
return self.value**3
if __name__ == '__main__':
x = myCalc(10)
print x # 10
print x.doubled # 20
print x.squared # 100
print x.cubed # 1000
改编自http://docs.python.org/2/howto/descriptor.html#properties
答案 2 :(得分:0)
class myCalc(object):
def_init_(self, value)
self.value=value
def_init_(self, name)
print "Welcome to myCalc!"
self._name=name
def get_name(self):
return self._name
def set_name(self, new_name):
if new_name=="":
print "You mut enter a name."
else:
self._name=new_name
print "The name has been changed."
def_str_(self)
return str(self.value)
def dbler(self):
return self.value*2
doubled=property(dbler)
squared=property(lambda self: self.value**2)
name=property(get_name, set_name)
def talk(self):
print "\nWelcome, this is," self.name
如果名称 ==' 主要': x = myCalc(5) 打印x print x.doubled print x.squared
主线计算值= MYMATH("计算器&#34) calc.talk()
打印" \ nmyCalc的名字是:", print calc.name
打印" \ n更改myCalc的名称。" calc.name =""
calc.talk()
raw_input(" \ n \ n按回车键退出。"
这是我要做的事情,但是我一直遇到错误。我希望能够更改对象名称和编号。