假设我有一个像这样的小代码:
#!/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.name
和my_dog.age
变量设置为willie
和6
吗?现在,执行my_dog.sit()
时,为什么方法sit()
需要一个self
作为参数?是因为如果存在同一类的另一个实例(例如your_dog
),那么它知道使用your_dog.name
而不是my_dog.name
吗?
答案 0 :(得分:1)
“ Self” 表示类的实例。每当创建类的新实例时,“ self” 表示该类将具有自己的变量,这些变量不会与其他实例共享。在您的示例中,创建学校实例时,将引用该特定实例,该实例将具有自己的年龄和名称变量,与可能创建的任何其他学校实例分开。
基本上,它与全局变量相反。 “ self” 变量只能由特定实例直接使用,不能用于其他任何事物。如果您想使用这些变量,则必须使用点符号进行说明,例如school_one.age,school_two.name等。
答案 1 :(得分:1)
首先,Python没有instance variable
的正式语法。
当您调用实例的方法时,Python会自动将实例插入第一个参数。
因此,您需要将至少一个参数传递给该方法。 (可以是self
,this
或其他任何东西)
答案 2 :(得分:1)
Self是指调用方法的实例。如果某个函数不需要self,则表示该函数不需要该特定类的实例来调用该方法。