这两个'x'在这个Python代码中意味着什么:self.x = x?

时间:2012-07-15 10:22:07

标签: python self

我对以下代码感到困惑:

class Point():
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

我不明白代码x中的那两个self.x = x是什么意思。

4 个答案:

答案 0 :(得分:9)

self.x是Point类的一个属性。因此,如果p是Point类的一个实例,那么p.x就是您在上面看到的self.x(self是对您定义的类的引用)。第二个x是在初始时def __init__(self, x=0, y=0):传递的参数。请注意,如果您未传递任何内容,则默认为零。

答案 1 :(得分:7)

第一个xself的属性,而第二个是方法作为第二个参数。

你可以把它写成:

class Point():
    def __init__(self, new_x=0, new_y=0):
        self.x = new_x
        self.y = new_y

并查看哪个属于哪个。

答案 2 :(得分:2)

首先阅读此问题并回答:What is the purpose of self?。对于您的问题,第一个self.xself的属性,第二个x是您在Point的构造函数中获得的参数

答案 3 :(得分:-2)

class Employee:
   def __init__(self, name, salary):
       self.name = name
       self.salary = salary    # self ? ? ?

   def displayEmployee(self):
       salary  =  -69 
       print self.name, self.salary,salary    # self ? ? ?

运行:

emp1 = Employee("nick", 2000)

emp1.displayEmployee()      # self ! ! !

输出:

nick 2000 -69

“自我”解释了! :self.salary = 2000,salary = -69