我有一个班级:
class Difference:
def __init__(self,a1):
self.a1=a1
def computeDifference(self):
d0=max([max(self.a1)-i for i in self.a1])
return d0
maximumDifference=d0
现在,当我尝试访问类似下面的波形错误:
_ = input().strip()
a = [int(e) for e in input().strip().split(' ')]
d = Difference(a)
d.computeDifference()
print(d.maximumDifference)
错误:
出了什么问题?追踪(最近一次通话): 文件" q.py",第2行,in 班级差异: 文件" q.py",第8行,差异 maximumDifference = D0 NameError:name' d0'未定义
答案 0 :(得分:0)
你的问题是缩进。 Python代码必须缩进才能正常工作。尝试:
class Difference:
def __init__(self,a1):
self.a1=a1
def computeDifference(self):
d0=max([max(self.a1)-i for i in self.a1])
self.maximumDifference=d0
return d0
此外,行maximumDifference=d0
永远不会在返回后放置,即使它是,但由于您只在本地使用,因此您的代码无效。要在该功能之外存储和使用maximumDifference
,您应该将其存储在self.maximumDifference
中,如上例所示。
答案 1 :(得分:0)
一些事情:
d0
之前的内容,然后才能将其分配给maximumDifference
。 d0
并尝试将其分配给maximumDifference
,也不会达到它,因为该行位于return
州政府之后。你可以做这样的事情来解决上述问题:
def computeDifference(self):
d0=max([max(self.a1)-i for i in self.a1])
self.maximumDifference=d0
return d0
上面的代码可以使用但是在__init __ 之外定义属性并不是一个好习惯。在__init __
中定义类属性更好class Difference:
def __init__(self,a1):
self.a1=a1
self.maximumDifference = self.computeDifference()
def computeDifference(self):
d0=max([max(self.a1)-i for i in self.a1])
return d0