gpt4 book ai didi

python - 方法返回字符串时出现 TypeError

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:32 26 4
gpt4 key购买 nike

代码有什么问题?当方法返回类字符串时,Python 返回 TypeError。

class window:
def __init__(self, title='window'):
self.title = title
def title(self, title):
if title:
self.title = title
else:
return self.title

window = window()
window.title('changed')
print(window.title())

错误:

Traceback (most recent call last):
File "C:/Users/Danilo/Desktop/pygtk.py", line 10, in <module>
window.title('changed')
TypeError: 'str' object is not callable

最佳答案

方法也是属性。您不能为方法和属性重用名称 title。在您的实例中,您将 self.title 设置为一个字符串,这是不可调用的:

>>> class window:
... def __init__(self, title='window'):
... self.title = title
... def title(self, title):
... if title:
... self.title = title
... else:
... return self.title
...
>>> window().title
'window'
>>> window().title()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable

Python 无法再在该类上找到该方法,因为该实例具有同名的属性。

重命名属性;例如使用下划线:

class window:
def __init__(self, title='window'):
self._title = title
def title(self, title):
if title:
self._title = title
else:
return self._title

如果您希望title 参数是可选的,您应该使用关键字参数:

def title(self, title=None):
if title:
self._title = title
else:
return self._title

现在 title 将默认为 None 并且您的 if title 测试将正常工作:

>>> window_instance = window()
>>> window_instance.title('changed')
>>> print(window_instance.title())
changed

请注意,我还为实例使用了不同的名称;你也不想屏蔽类(class)。

关于python - 方法返回字符串时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com