簡體   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