我想要做的更复杂但我做了一个简单的例子来解决我的问题。我试图在我已经定义它之后调用一个函数。
class rojas():
def get_avg_height(self, height):
height = {'Julian': 180, 'Aaron': 170, 'Bruno': 170, 'Julio': 175}
avg = (height['Julian'] + height['Aaron'] + height['Bruno'] + height['Julio']) / len(height)
return height
get_avg_height(self,height)
我的追溯是:NameError: name 'self' is not defined
而且我确信,如果它达到了高度,那么高度也将“不被定义”。
感谢所有帮助,谢谢。
答案 0 :(得分:0)
有几个问题。首先在类上定义get_avg_height。这意味着你必须有一个类的实例来调用它。它看起来像b.get_avg_height(heights)
。第二,当你在一个类上定义了一个函数而你调用一个函数时,self被隐式设置为实例,而不是显式的。因此,调用它时应该只有一个参数。在b.get_avg_height(heights)
中,self将在函数体中等于b。第三,因为高度被立即分配到函数内部,因为高度参数在使用之前被丢弃。第四个在呼叫站点没有定义名为height的变量,因此您实际上并没有传入任何内容。在调用站点移除self后,您将获得与高度相同的名称错误。第六个你的缩进搞砸了,呼叫站点应该在最外层。