3

我想创建一个 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

我想尽可能让程序响应对象中数字的两倍和平方的属性。任何的意见都将会有帮助。

4

3 回答 3

5

属性对象具有 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 并删除另外两个

于 2013-09-03T03:39:33.827 回答
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

于 2013-09-03T04:50:43.643 回答
0

类 myCalc(对象):

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

if name ==' main ': x= myCalc(5) print x print x.doubled print x.squared

主线

calc=myMath("计算器") calc.talk()

print "\nmyCalc's name is:", print calc.name

print "\n更改 myCalc 的名称。" 计算名称=""

calc.talk()

raw_input("\n\n按回车键退出。"

这是我想要做的,但是我不断遇到错误。我希望能够更改对象名称和编号。

于 2013-09-11T09:50:46.780 回答