Python 3.6函数不断引起我的问​​题

时间:2017-03-15 00:22:37

标签: python python-3.x

我想要做的更复杂但我做了一个简单的例子来解决我的问题。我试图在我已经定义它之后调用一个函数。

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 而且我确信,如果它达到了高度,那么高度也将“不被定义”。

感谢所有帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

有几个问题。首先在类上定义get_avg_height。这意味着你必须有一个类的实例来调用它。它看起来像b.get_avg_height(heights)。第二,当你在一个类上定义了一个函数而你调用一个函数时,self被隐式设置为实例,而不是显式的。因此,调用它时应该只有一个参数。在b.get_avg_height(heights)中,self将在函数体中等于b。第三,因为高度被立即分配到函数内部,因为高度参数在使用之前被丢弃。第四个在呼叫站点没有定义名为height的变量,因此您实际上并没有传入任何内容。在调用站点移除self后,您将获得与高度相同的名称错误。第六个你的缩进搞砸了,呼叫站点应该在最外层。