在开始时我会说我正在寻找答案,但无法找到它并抱歉这么基本的问题。我用TTS创建了程序。我创建了名为" list_merge"的全局变量,但大多数人都说全局变量是BAD。所以我决定把这个列表放在init中。 PS。忽略空格,它们只是因为我在这里复制而存在。
错误是: AttributeError:' Ver2ProjectWithTTS'对象没有属性' list_merge'
--------------------
Product | Price
--------------------
apples | 5
oranges | 6
peaches | 7
我得到了 AttributeError:' Ver2ProjectWithTTS'对象没有属性' list_merge'
任何想法如何避免此错误?嗯我的客观性不好,我不能继续前进而不解决这个问题。 PS。在init def之前使用全局变量它正常工作。 感谢您的帮助:)
答案 0 :(得分:4)
您必须在使用之前先设置它:
class Ver2ProjectWithTTS(object):
def __init__(self):
# first set it
self.list_merge = []
self.read_json_file()
self.read_xml_file()
self.say_something()
无论如何不在构造函数中做任何高级逻辑,这不是一个好习惯。改为做一个方法:
class Ver2ProjectWithTTS(object):
def __init__(self):
# first set it
self.list_merge = []
def do_the_job(self):
self.read_json_file()
self.read_xml_file()
self.say_something()
...
instance = Ver2ProjectWithTTS()
instance.do_the_job()