gpt4 book ai didi

python - 如何解决python中的属性错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:56 24 4
gpt4 key购买 nike

在开始时,我会说我正在寻找答案,但找不到答案,很抱歉提出这么基本的问题。我用 TTS 创建了程序。我创建了名为“list_merge”的全局变量,但你们中的大多数人都说全局变量很糟糕。所以我决定把这个列表放在 init 中。附言。忽略空格,它们存在只是因为我在这里复制了它。

错误是:AttributeError: 'Ver2ProjectWithTTS' 对象没有属性 'list_merge'

import json
import pyttsx
from openpyxl import load_workbook

class Ver2ProjectWithTTS(object):

def __init__(self):
self.read_json_file()
self.read_xml_file()
self.say_something()
self.list_merge = []

def read_json_file(self):
with open("json-example.json", 'r') as df:
json_data = json.load(df)
df.close()
for k in json_data['sentences']:
text_json = k['text']
speed_json = int(k['speed'])
volume_json = float(k['volume'])
dict_json = {'text': text_json, 'speed': speed_json, 'volume': volume_json}
self.list_merge.append(dict_json)

def read_xml_file(self):
tree = et.parse('xml-example.xml')
root = tree.getroot()
for k in range(0, len(root)):
text_xml = root[k][0].text
speed_xml = int(root[k][1].text)
volume_xml = float(root[k][2].text)
dict_xml = {'text': text_xml, 'speed': speed_xml, 'volume': volume_xml}
self.list_merge.append(dict_xml)

def say_something(self):
for item in self.list_merge:
engine = pyttsx.init()
engine.getProperty('rate')
engine.getProperty('volume')
engine.setProperty('rate', item['speed'])
engine.setProperty('volume', item['volume'])
engine.say(cleared_text)
engine.runAndWait()

if __name__ == '__main__':
a = Ver2ProjectWithTTS()

我得到AttributeError: 'Ver2ProjectWithTTS' 对象没有属性 'list_merge'

有什么办法可以避免这个错误吗?好吧,我的客观性不好,如果不解决这个问题,我就无法继续前进。附言。在 init def 之前使用全局变量可以正常工作。感谢您的帮助:)

最佳答案

使用前必须先设置if:

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()

关于python - 如何解决python中的属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38991025/

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