python-3.x 使用字典时类中出现问题:属性错误:"My_Data"对象没有"其他"属性

to94eoyn  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(148)

当我运行这个脚本时,我在My_Dictionary[row[0]].Other.append(row[3])行中得到一个错误。
这个问题当然与类有关,因为在以下情况下,此代码可以正常工作:我使用它时没有使用Page1类,而只使用My_Data类(init中没有self)。
错误是:

AttributeError: 'My_Data' object has no attribute 'Other'

我该怎么修?谢谢

class Page1(tk.Frame):
    def __init__(self, master, other, **kw):
        super().__init__(master, **kw)
        self.configure(bg='white')

        class My_Data():
            def __init__(self, Name, Year, Other):
                self.Name: str
                self.Year: float
                self.Other: float
                
        def function1(self):
            My_Dictionary = {}
            x = cursor.execute("sql")

            for row in x.fetchall():
                if row[0] not in My_Dictionary:
                    Data = My_Data(
                        Name=row[1],
                        Year=row[2],
                        Other=list())

                    My_Dictionary[row[0]] = info
                My_Dictionary[row[0]].Other.append(row[3])
vh0rcniy

vh0rcniy1#

在“My_Data”中,我没有看到任何变量定义,但看到一些涉及冒号和数据类型的意外语法。请考虑以下代码段:

self.Other = Other

编辑:这里有一个完整的例子:

class Page1(tk.Frame):
    def __init__(self, master, other, **kw):
        super().__init__(master, **kw)
        self.configure(bg='white')

        class My_Data():
            def __init__(self, Name: str, Year: float, Other: float):
                self.Name = Name
                self.Year = Year
                self.Other = Other 
               
        def function1(self):
            My_Dictionary = {}
            x = cursor.execute("sql")

            for row in x.fetchall():
                if row[0] not in My_Dictionary:
                    Data = My_Data(
                        Name=row[1],
                        Year=row[2],
                        Other=list())

                    My_Dictionary[row[0]] = info
                My_Dictionary[row[0]].Other.append(row[3])

相关问题