我不认为这是因为函数的范围,但是我得到了
Unresolved reference at get_all_predicates(examples).count(predicate_list[0])
在类中的get_entropy_of_attributes(examples, predicate_list)
函数内部Tree
:
class Tree:
def get_examples(examples, attributes):
for value in examples:
yield dict(zip(attributes, value.strip().replace(" ", "").split(',')))
def get_all_predicates(examples):
return [d['Predicate'] for d in examples]
def get_entropy_of_attributes(examples, predicate_list):
get_all_predicates(examples).count(predicate_list[0])
return 0
examples = list(get_examples(all_examples, name_of_attributes))
predicate_list = list(set(get_all_predicates(examples)))
get_entropy_of_attributes(examples, predicate_list)
all_examples
是字典列表,name_of_attributes
是保存从文本文件导入的值的列表。
all_examples = [{'P_Length': '1.4', 'P_Width': '0.2', 'Predicate': 'I-setosa', 'Sepal_Width': '3.5', 'S_Length': '5.1'}, ...]
name_of_attributes = ["Check","P-Width"]
有什么帮助吗?
如果要调用类方法,则必须使用
self
调用它们,例如有关Python类的示例,请参见this link。
类没有作用域,只有名称空间。这意味着在其中定义的函数不能自动看到其他类变量。
要访问类变量,您需要使用属性语法:或者
Foo.var
(通过类访问),或者,如果您正在编写实例方法,使用self.var
(通过当前实例访问,该实例将作为第一个参数传入)。通过这种设置,您可以几乎修复当前代码(但不是完全修复)。
如果在类完全初始化之后调用它,它将在没有任何异常的情况下工作(尽管它的实现看起来有点荒谬)。但是,当您调用它来定义类变量时,它不会像当前代码那样工作。这是因为类对象只在运行了所有类体之后创建并绑定到类名。
我认为解决这个问题的办法可能是用更传统的方式重新设计你的课程。与其基于各种全局变量(如
all_examples
)设置类变量,还不如通过将参数传递给构造函数并使从中计算的其他变量成为实例属性来创建类的实例。我试着写出来,但坦率地说,我不太明白你做得怎么样。相关问题 更多 >
编程相关推荐