Python类(属性错误:“”对象没有属性“”)

9q78igpj  于 2023-03-16  发布在  Python
关注(0)|答案(4)|浏览(256)

在我的代码中有困难理解的问题,新的类(通常也python,所以抱歉,如果我命名错误)。我收到这个错误:
我认为我的代码太冗长了,不能包含在这里,所以我做了一个简化的版本来测试下面的概念。
问题是,我如何创建一个新的self对象“self4”?然后这个对象可以被类中的其他函数使用。
属性错误:“className”对象没有属性“self4”

class className(object):

   def __init__(self, self1=1,self2=2,self3=3):
        self.self1=self1
        self.self2=self2
        self.self3=self3

   def evaluate(self, self5):
        print className.func1(self) + className.func2(self)
        self.self5=self5
        print className.func1(self)

   def func1(self):
       return self.self1 + self.self5

   def func2(self):
       self.self4 = self.self1+self.self2+self.self3
       return self.self4

文件名tester.py

import tester.py

mst=tester.className()

mst.evaluate()
au9on6nz

au9on6nz1#

编辑:

您的代码工作正常!
问题是什么?
我仍然认为最好将self4移到init中!

原件

我认为最合乎逻辑的做法是在init上定义self4

class className(object):
    def __init__(self, self1=1, self2=2, self3=3):
        self.self1 = self1
        self.self2 = self2
        self.self3 = self3
        self.self4 = None

   #rest of class
svmlkihl

svmlkihl2#

如果任何人仍有此问题:当你的缩进出错时,你会得到这个错误。要解决上面的问题,你只需要在最后两个函数定义前加一个空格,即;

class className(object):
    

    def __init__(self, self1=1,self2=2,self3=3):
        self.self1=self1
        self.self2=self2
        self.self3=self3

    def evaluate(self, self5):
        
        print className.func1(self) + className.func2(self)
        self.self5=self5
        print className.func1(self)

    def func1(self):
        return self.self1 + self.self5

    def func2(self):
        self.self4 = self.self1+self.self2+self.self3
        return self.self4

只要确保它们都有类似缩进,就可以开始了。

eimct9ow

eimct9ow3#

应该在方法中传递self4

xzv2uavs

xzv2uavs4#

如果其他人遇到此错误,并且它不是缩进问题,则如果您不小心将类型注解的值改为;而不是:,也会发生此错误:

>>> class Example:
...     def __init__(self, var: str) -> None:
...         self.var; str = var
... 
>>> Example('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __init__
AttributeError: 'Example' object has no attribute 'var'

相关问题