Python 类中的 self


在本教程中,我们将学习 Python 中的 self。如果您使用 Python,那么您一定熟悉它。我们将了解一些关于它的有趣之处。

注意 - self 在 Python 中不是关键字。

让我们从 Python 中 self 最常见的用法开始。

我们将在类中使用 self 来表示对象的实例。我们可以创建多个类的实例,并且每个实例都将具有不同的值。而 self 帮助我们在类实例中获取这些属性值。让我们来看一个例子。

示例

# class
class Laptop:
   # init method
   def __init__(self, company, model):
      # self
      self.company = company
      self.model = model

我们将类的属性定义为 self.[something]。因此,每当我们创建一个 的实例时,self 将引用一个不同的实例,我们从中访问类属性或方法。

现在,让我们创建两个 Laptop 类的实例,看看 self 如何工作

示例

演示

# class
class Laptop:
   # init method
   def __init__(self, company, model):
      # self
      self.company = company
      self.model = model
# creating instances for the class Laptop
laptop_one = Laptop('Lenovo', 'ideapad320')
laptop_two = Laptop('Dell', 'inspiron 7000')
# printing the properties of the instances
print(f"Laptop One: {laptop_one.company}")
print(f"Laptop Two: {laptop_two.company}")

输出

如果您运行上述代码,则将得到以下结果。

Laptop One: Lenovo
Laptop Two: Dell

我们为同一个属性得到了两个不同的名称。让我们看看其背后的细节。

Python 在访问其方法时默认会发送对实例的引用,而该引用被捕获在 self 中。因此,对于每个实例,引用都是不同的。我们将获得相应的实例属性。

我们知道 self 不是 Python 的关键字。它更像是一个参数,在访问实例的任何属性或方法时,您不需要发送它。

Python 将自动为您发送对实例的引用。我们可以使用任何变量名来捕获实例的引用。运行以下代码并查看输出。

示例

演示

import inspect
# class
class Laptop:
   # init method
   def __init__(other_than_self, company, model, colors):
      # self not really
      other_than_self.company = company
      other_than_self.model = model
      other_than_self.colors_available = colors
      # method
      def is_laptop_available(not_self_but_still_self, color):
         # return whether a laptop in specified color is available or not
         return color in not_self_but_still_self.colors_available
         # creating an instance to the class
         laptop = Laptop('Dell', 'inspiron 7000', ['Silver', 'Black'])
# invoking the is_laptop_available method withour color keyword
print("Available") if laptop.is_laptop_available('Silver') else print("Not available")
print("Available") if laptop.is_laptop_available('White') else print("Not available")

输出

如果您运行上述代码,则将得到以下结果。

Available
Not available

我们将名称 self 更改为 其他名称。但是,它仍然像以前一样工作。没有区别。因此,self 不是关键字。此外,我们可以将 self 更改为我们喜欢的任何名称。它更像是一个参数。

注意 - 最佳实践是使用 self.。这是每个 Python 程序员都遵循的标准。

结论

如果您在本教程中有任何疑问,请在评论部分提出。

更新于:2020年7月11日

浏览量 1K+

启动您的职业生涯

通过完成课程获得认证

开始学习
广告