我现在来自Java和学习Python.我尝试理解Python中类成员的概念.
这是Java中的示例程序:
class Hello {
    int x = 0;
    void ex() {
        x = 7;
    }
    public static void main(String args[]) {
        Hello h = new Hello();
        System.out.println(h.x);
        h.ex();
        System.out.println(h.x);
}   }
Run Code Online (Sandbox Code Playgroud)
这是我在Python中所做的,遵循我发现的一些例子:
class Hello:
   def __init__(self) :
       self.x = 0
   def ex(self):
       self.x = 7
h = Hello()
print(h.x)
h.ex()
print(h.x)
Run Code Online (Sandbox Code Playgroud)
两个程序都返回:
0
7
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
首先,你的python代码是正确的.
这只是关于语言设计方式的问题.Java使用一种对对象的引用的自动推断.对于非Java专家来说,它有时会导致奇怪的行为:
private int a; 
public int add(int a, int b){
    return a+b; // what a will it use? 
}
Run Code Online (Sandbox Code Playgroud)
所以,这就是为什么在java中有关键字this可以使用(但你不是被迫)来解决这种模糊性.
python团队决定强制使用self(或任何其他词,但稍后我会解释)这个词来避免这种问题.你无法摆脱它.虽然,java仍然是比python更冗长的语言,关键字self不会影响很多假设.
但是,您没有义务使用"self"字作为当前对象的引用.您可以使用任何其他单词作为您方法的第一个参数(但这是一个非常糟糕的做法).
在这里,您可以看到两个参考资料,深入解释为什么"自我留在这里":
http://www.programiz.com/article/python-self-why
http://neopythonic.blogspot.be/2008/10/why-explicit-self-has-to-stay.html