特别是在使用类并调用它时遇到问题。 它是三角形程序的最高和路径..但是我的课程和调用函数存在问题。
具体..
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ComboBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border Background="{TemplateBinding Background}" BorderThickness="0" Margin="2">
<TextBlock Text="{TemplateBinding Content}" Margin="2" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{x:Static SystemColors.HighlightBrush}" />
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
错误是说没有定义三角形。 我的错误可能在哪里?这个课程还有很多功能。但这是我目前的错误,谢谢。 列表就像
class TriArray():
triangle = read_input("inputt.txt")
def get_data(node):
return triangle[node.row][node.col]
def main():
triangle = TriArray()
node = triangle.get_root() #*added these to the question
path_sum = triangle.get_data()
def read_input(filename): #*so you can see
triangle = []
with open(filename, 'r') as fin:
rows = fin.readline()
for line in fin:
for word in rows.split():
triangle.append([int(i) for i in line.split()])
print(triangle)
如果相关..
答案 0 :(得分:3)
您的代码中存在一些问题。
triangle
,如triangle = TriArray()
get_data
需要node
参数,但您没有发送。 read_input
未定义。你可以像这样解决,
class TriArray():
triangle = None
def read_input(self):
with open('inputt.txt', 'r') as f:
self.triangle = f.read()
def get_data(self, node):
self.read_input()
return self.triangle[node.row][node.col]
triangle = TriArray()
# you have to define and sent node parameter
# node = ??
path_sum = triangle.get_data(node)
答案 1 :(得分:0)
class TriArray():
triangle = read_input("inputt.txt")
def get_data(node):
return triangle[node.row][node.col]
triangle = TriArray()
path_sum = triangle.get_data()
试试这个
答案 2 :(得分:0)
为了调用类方法,您必须首先实例化它:
path_sum = TriArray().get_data(node)
答案 3 :(得分:0)
您尚未创建该类的实例。代码的类部分只定义了一个类,但没有实例化它。
通过插入
创建实例triangle = TriArray()
在最后一行之前。
编辑:在修改后的代码中,您可以在main函数中创建一个实例。但是,该实例不是主要功能之外的visiblke。您必须在与使用它的位置相同的范围内创建实例。
答案 4 :(得分:0)
您可以定义这样的类,这很好。但是如果没有类的实际实例,triangle
将保留一个未在外部定义的内部值。这就是NameError
。
根据您的编辑,我们看到有一个实例化。但这发生在main
函数内;这个功能之外的其他部分仍然没有看到它。
一种方法是将path_sum
放在main
函数中,如下所示:
class TriArray():
def get_data(node):
return triangle[node.row][node.col]
def read_input(filename):
triangle = []
with open(filename, 'r') as fin:
rows = fin.readline()
for line in fin:
for word in rows.split():
triangle.append([int(i) for i in line.split()])
print(triangle)
triangle = read_input("inputt.txt")
def main():
# let's assume node is defined and node.row = 0, node.col = 1
triangle = TriArray()
path_sum = triangle.get_data(node) # brought in from the cold
这当然意味着,对于任何事情,您需要实际调用main
函数。您还会注意到我已将read_input
转移到类中并在调用之前,因此在尝试调用NameError
时不会有read_input
。