Python Classes ( AttributeError: '' object has no attribute '')

Python Classes ( AttributeError: '' object has no attribute '')

无法理解我的代码中的问题,classes 的新手(通常也是 python,如果我说错了,很抱歉)。我收到此错误:

我觉得我的代码太冗长,无法包含在这里,所以我制作了一个简化版本来测试下面的概念。

问题是,如何创建一个新的自身对象 "self4"?然后 class 中的其他函数可以使用它。目前我收到此错误。

AttributeError: 'className' object has no attribute '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()

您应该在方法中传递 self4

编辑:
您的代码工作正常!
问题是什么?

我还是觉得把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

如果还有人遇到这个问题:当你的缩进是 goofed.To 时会出现这个错误 修复上面提出的问题,你只需要在最后两个函数定义之前添加一个 space ,即是; class class名称(对象):

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

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