如何在python中使用get和set方法创建一个类?

时间:2013-09-03 03:34:44

标签: python class methods properties

我想创建一个具有构造函数的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

我想让程序响应具有双重和平方对象中数字的属性。任何的意见都将会有帮助。

3 个答案:

答案 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)

具有doubledsquared属性

的简单对象
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按回车键退出。"

这是我要做的事情,但是我一直遇到错误。我希望能够更改对象名称和编号。