-1
我有问题,做一些验证和改变了get()
方法的返回:类型错误对功能的方法/类属性
class Foo(object):
def __init__(self, turnNum=1):
self._turnNum = turnNum
def set_turnNum(self, turnNum):
self._turnNum = turnNum
def get_turnNum(self):
return self._turnNum
但我发现了错误,每次我试图像时间:
num = Foo()
num.set_turnNum(13)
if num.get_turnNum % 2 == 0:
print('Not works after all...')
...
我得到这个错误信息:
TypeError: unsupported operand type(s) for %: 'method' and 'int'
如果我尝试CONV ERT到int
:
num = Foo()
num.set_turnNum(13)
if int(num.get_turnNum) % 2 == 0:
print('Not works after all...')
...
然后我得到这个其他错误消息:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'method'
可以看出,我与受保护的属性尝试。但是,为了DIY,我也尝试了公共和私人属性。不幸的是,在Pytohn 3.5.2和3.6.1中,我得到了相同的结果。
什么是在Python中这样做的正确方法?
它不是一个属性,它是一个方法:'get_turnNum()'。您可能想查看['@ property'](https://docs.python.org/3/library/functions.html#property)装饰器。 –