繁体   English   中英

属性设置器在Python中给出错误

[英]Property setter gives an error in Python

我是Python的新手。 我尝试学习Python中的@property装饰器。 这是我的代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class C(object):
    """docstring for C"""
    def __init__(self, foo):
        self._foo = foo

    @property
    def foo(self):
        return self._foo
    @foo.setter
    def foo(self, value):
        self._foo = value

        return self.foo


c = C(1)

print c.foo

print c.foo(2)

在上面的代码中,第一个print给我“ 1”。 当我尝试将值设置为foo时,出现以下错误:

Traceback (most recent call last):
  File "sub.py", line 23, in <module>
    print c.foo(2)
TypeError: 'int' object is not callable

如何解决这个错误。 我的代码有什么问题?

setter与赋值运算符=

c.foo = 2

c.foo(2)如何工作的另一个示例:

In [7]: c = C(lambda x: x*x)

In [8]: c.foo(2)
Out[8]: 4

c.foo(…)首先获取 c.foo的值,然后调用该函数。

你是说要做

c.foo = 2

您可以像使用属性一样使用属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM