为什么self是方法的必需参数?

时间:2019-01-24 10:33:59

标签: python

假设我有一个像这样的小代码:

#!/usr/bin/env python3

class Dog():

  def __init__(self, name, age):
    self.name = name
    self.age = age

  def sit(self):
    print(self.name + " is now sitting.")

my_dog = Dog('willie',6)
my_dog.sit()

据我了解,第my_dog = Dog('willie',6)行创建了一个名为my_dog的实例。它调用__init__函数,将其内部转换为Dog.__init__(my_dog, willie, 6),并将my_dog.namemy_dog.age变量设置为willie6吗?现在,执行my_dog.sit()时,为什么方法sit()需要一个self作为参数?是因为如果存在同一类的另一个实例(例如your_dog),那么它知道使用your_dog.name而不是my_dog.name吗?

3 个答案:

答案 0 :(得分:1)

“ Self” 表示类的实例。每当创建类的新实例时,“ self” 表示该类将具有自己的变量,这些变量不会与其他实例共享。在您的示例中,创建学校实例时,将引用该特定实例,该实例将具有自己的年龄和名称变量,与可能创建的任何其他学校实例分开。

基本上,它与全局变量相反。 “ self” 变量只能由特定实例直接使用,不能用于其他任何事物。如果您想使用这些变量,则必须使用点符号进行说明,例如school_one.age,school_two.name等。

答案 1 :(得分:1)

首先,Python没有instance variable的正式语法。

当您调用实例的方法时,Python会自动将实例插入第一个参数。 因此,您需要将至少一个参数传递给该方法。 (可以是selfthis或其他任何东西)

答案 2 :(得分:1)

Self是指调用方法的实例。如果某个函数不需要self,则表示该函数不需要该特定类的实例来调用该方法。