无法理解我的代码中的问题,对类很新(通常也是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()
答案 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