缺少1个必需的位置参数:在为变量赋值方法时'self'

时间:2016-05-18 02:46:26

标签: python

我正在尝试将方法的返回分配给变量并且遇到此错误。

class MyClass():

    def my_def(self):
        return "Hello"

    my_variable = my_def()

这是我想要做的Java的等价物。

public class NewException {
    public int method1(){

        return 1;
    }
    public int variable = method1();
}

我确信这很简单,但我甚至找不到合适的词来谷歌。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

让我们从方法和函数之间的区别开始,基本上一个方法属于某个对象,而函数则不属于某个对象。例如,

def myFunction():
    return "F"

class MyClass:
    value = 0
    def myMethod(self, value):
        old = self.value
        self.value = value
        return old

myClassInstance = MyClass()
print myClassInstance.myMethod(3)
# 0
print myClassInstance.myMethod(33)
# 3
print myFunction()
# F

请注意,该方法绑定到实例,在创建实例之前调用该方法没有意义。考虑到这一点,您的错误应该更有意义。没有实例(self)就无法调用该方法。这不是唯一的方法,例如有静态方法"。静态方法在类上定义,但是在没有实例的情况下调用它们。例如:

class MyClass:
    @staticmethod
    def myStaticMethod():
        return "static method"
    # Consider using an instance attribute instead of a class attribute
    def __init__(self):
        self.instance_attribute = MyClass.myStaticMethod()
# Or if you need a class attribute it needs to go outside the class block
MyClass.class_attribute = MyClass.myStaticMethod()