Python类(AttributeError:''对象没有属性'')

时间:2015-12-09 10:03:55

标签: python class object instance

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

我认为我的代码太长,不能包括在这里,所以我做了一个简化版本来测试下面的概念。

问题是,如何创建新的自我对象“self4”?然后,该类可用于其他功能。目前我收到此错误。

  

AttributeError:'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

filename tester.py

import tester.py

mst=tester.className()

mst.evaluate()

3 个答案:

答案 0 :(得分:1)

如果还有人有这个问题:当你的缩进错误时你会得到这个错误。要解决上面的问题,你只需要在最后两个函数定义之前添加一个空格,即; 类类名(对象):

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

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

答案 1 :(得分:0)

您应该在方法中传递self4

答案 2 :(得分:0)

修改
你的代码工作正常!
问题是什么?

我仍然认为将Dim x As Integer, Black As Integer, y As Integer Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual lr = Cells(Rows.Count, 2).End(xlUp).Row For x = 2 To lr Black = 0 For y = 1 To Len(Cells(x, 2)) If Cells(x, 2).Characters(y, 1).Font.ColorIndex = 1 Then Black = Black + 1 End If Next y Cells(x, 3).FormulaR1C1 = "=1-" & Black & "/LEN(RC[-1])" Next x doneBox = MsgBox("Done!") Application.ScreenUpdating = True Application.DisplayStatusBar = True Application.Calculation = xlCalculationAutomatic 移到init!

会更好

<强>原始
我认为最合乎逻辑的是在init上定义self4

self4