【问题标题】:What is the use of the keyword "self" in Python Object Oriented Programming? [duplicate]Python 面向对象编程中关键字“self”的用途是什么? [复制]
【发布时间】:2020-12-07 15:31:11
【问题描述】:

我刚开始学习 Python,并且开始接触面向对象的编程。我写了以下代码,它只是使用turtle模块绘制形状,但我仍然不太了解“self”关键字的使用:

import turtle

class Shape:
    def __init__(self, sides, angle, color="white", thickness=1):
        self.sides = sides
        self.angle = angle
        self.color = color
        self.thickness = thickness

    def draw(self):
        for x in range(self.sides):
            turtle.color(self.color)
            turtle.pensize(self.thickness)
            turtle.forward(100)
            turtle.left(90)
            if self.angle > 90:
                turtle.right(self.angle - 90)
            elif self.angle < 90:
                turtle.left(90 - self.angle)

hexagon = Shape(6,120,"Red", 5)
hexagon.draw()

【问题讨论】:

  • 你有什么困惑?你在这里多次使用它。另请注意,它不是关键字。 self 可以替换为任何名称; self 只是一个强大的约定。重要的是第一个参数位置。

标签: python class self


【解决方案1】:

self 从类内部引用类的实例。 https://www.programiz.com/article/python-self-why

这是链接的内容:

如果您已经使用 Python 编程(面向对象编程)有一段时间了,那么您肯定遇到过以 self 作为其第一个参数的方法。

让我们首先尝试了解这个重复出现的 self 参数是什么。 Python 中的 self 是什么?

在面向对象编程中,每当我们为一个类定义方法时,我们都会使用 self 作为每种情况下的第一个参数。让我们看一下名为 Cat 的类的定义。

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

    def info(self):
        print(f"I am a cat. My name is {self.name}. I am {self.age} years old.")

    def make_sound(self):
        print("Meow")

在这种情况下,包括 init 在内的所有方法都将第一个参数设为 self。

我们知道类是对象的蓝图。此蓝图可用于创建多个对象。让我们从上面的类中创建两个不同的对象。

cat1 = Cat('Andy', 2)
cat2 = Cat('Phoebe', 3)

self 关键字用于表示给定类的实例(对象)。在这种情况下,两个 Cat 对象 cat1 和 cat2 都有自己的 name 和 age 属性。如果没有 self 参数,同一个类就不能保存这两个对象的信息。

然而,由于类只是一个蓝图,self允许访问python中每个对象的属性和方法。这允许每个对象都有自己的属性和方法。因此,甚至早在创建这些对象之前,我们就在定义类时将这些对象引用为 self。

【讨论】:

  • 假设你正常调用该方法。 self 实际上可以是任何东西,如果你调用该方法就好像它是静态的一样。
猜你喜欢
  • 2021-04-14
  • 2019-04-23
  • 2023-03-31
  • 1970-01-01
  • 2011-02-27
  • 2012-04-04
  • 2011-10-15
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多