【发布时间】:2020-04-02 02:49:07
【问题描述】:
我收到以下错误:
Traceback (most recent call last):
File ".../TEST.py", line 34, in <module>
b.level = 12 # Error
File ".../TEST.py", line 23, in level
super().level(self, new_level)
TypeError: 'int' object is not callable
这里是代码:
class A:
def __init__(self):
self._level = 0
@property
def level(self):
return self._level
@level.setter
def level(self, new_level):
self._level = new_level
class B(A):
def __init__(self):
super().__init__()
@property
def level(self):
return self._level
@level.setter
def level(self, new_level):
super().level(self, new_level)
a = A()
print(a.level) # --> 0
a.level = 12
print(a.level) # --> 0
b = B()
print(b.level) # --> 12
b.level = 12 # Error
print(b.level) # never reached
我看到了那个帖子class method TypeError "Int object not callable",但对我没有帮助
【问题讨论】:
-
原因是
super().level不是函数。 -
注意,关于
super和property/descriptor 设置器有一个未解决的问题:bugs.python.org/issue14965 -
DustyPosa,但它应该是一个函数。我在另一堂课上写过同样的东西,效果很好。我应该更改哪些代码行?
标签: python oop properties getter-setter super