Python 中的 Self 关键字2024 年 8 月 29 日 | 阅读 6 分钟 self 代表类实例。我们可以使用 "self" 关键字在 Python 中访问类的属性和方法。该关键字将属性与类提供的参数关联起来。 由于 Python 不使用 @ 语法来创建实例属性的引用,因此我们必须使用 self。Python 选择实现方法,以便类的方法所对应的实例会自动提供,但不会立即接收:任何方法的第一个参数是该方法执行的实例。 探索带有 self 的对象引用示例 1:self 关键字程序 代码 输出 The reference id of the self method is: 139904481668400 The reference id of the object is: 139904481668400 为什么每次都要定义 Self 方法?即使我们理解了 self 的目的,对于学习过其他编程语言的开发者来说,self 每次构造方法时都显式地作为参数提供,这可能会显得很奇怪。有人认为明确总是比隐式更好。 示例 2 我们有一个 Position 类,其中有一个名为 distance 的方法,用于计算给定点到原点的距离。 代码 输出 The distance of the point (3, 4) from the origin is: 5.0 在上述场景中,__init__() 声明了三个参数,但我们只传递了两个(3 和 4)。同样,distance() 接受一个输入,但没有收到任何输入。 示例 3 为什么 Python 解释器没有报告参数数量不匹配?让我们在下面的代码中看看。 代码 输出 The name of the student is Harry The age of the student is 29 Name of the student is Louis Age of the student is 30 The age of Harry is 29 The age of Louis is 30 出现这种情况是因为在函数 Object() 中分配属性后,它们就与该特定对象相关联了;在本例中,当我们初始化对象(Harry 和 Louis)时,属性(name、age)就被附加到对象上。 示例 4 self 参数必须作为第一个参数发送到 Instance 函数和构造函数。如果我们不提供它,将会导致错误。 代码 输出 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) 如何避免 Self 参数?到目前为止,我们可以看到类对象或实例本身会自动作为第一个参数传递。在创建静态方法时,可以避免这种隐式行为。看下面的简单示例 代码 输出 We did not pass the self parameter to this method __init__() 不是构造函数__init__() 函数不是构造函数,这是从信息中得出的一个关键结论。许多初级的 Python 程序员对此感到困惑,因为 __init__() 在我们构建对象时会被执行。 正如我们所知,实例本身是 __init__() 方法的第一个参数。__init__() 方法用于在对象构造完成后立即初始化该对象。 从技术上讲,一个函数 Object() 是一个构建对象本身的方法。这个函数在 Python 中称为 new()。这个方法的语法是 语法 当调用 __new__() 方法时,类本身会自动作为第一个参数(cls)提供。 与 self 一样,cls 也只是一个命名约定。此外,Python 函数调用中使用 *args 和 **kwargs 参数来接受任意数量的参数。 实现 __new__() 时,请记住以下几点
请看以下示例 代码 输出 This is under the new method The class argument: <class '__main__.Class'> The args: (3, 4) The kwargs: {} This is under the init method 这种情况表明 __new__() 在 __init__() 之前被调用。我们还可以观察到类被作为参数传递给 __new__()(Point)。最后,使用 object 基类的 __new__() 函数创建对象。 在 Python 中,基类,即所有后续类都从中派生的类,是 object。在前面的例子中,我们使用 super() 来实现这一点。 结论总而言之,Python 中的 self 关键字是在类策略中用于引用实际类的实例的。它允许访问和控制实例的属性和策略。在类内部定义策略时,self 参数通常是包含在内的第一个参数,尽管也可以根据需要将其命名为其他名称。 |
简介:本教程教我们一个程序,用于使用 Python 生成 CAPTCHA 并验证用户。CAPTCHA 用于各种网站,以检查用户是人类还是机器人。它主要用于安全目的。对于使用 CAPTCHA,除了人类...
阅读 4 分钟
面向初学者和高级程序员。在本文中,我们将讨论一些适合所有读者的学习 Django 的优秀书籍。我们将探讨它们的特点、书籍写作风格、示例解释、涵盖的主题以及书中定义的项目数量。在探索书籍之前...
阅读 8 分钟
在本教程中,我们将学习新推出的 Python 库,或者我们可以说是新功能 PyScript。这个库允许我们在 Web 浏览器上运行 Python 脚本。Python 提供了许多让程序员生活更轻松的功能。现在,他们推出了...
阅读 10 分钟
Rich 库是一个强大的 Python 库,为终端应用程序提供了广泛的文本格式化和样式选项。使用 Rich,您可以为文本输出添加颜色和样式,创建表格和进度条,甚至在终端中显示图像和动画...
阅读9分钟
在软件开发人员、工程师和数据科学家中,Python 是一种备受欢迎的编程语言。其广泛的库和模块集合使得处理数据、图形和用户界面变得简单。PyQtGraph 就是一个广受欢迎的用于开发交互式实时视觉效果和可视化内容的包。您将学习...
阅读 3 分钟
游戏世界中有许多流行的游戏是使用Python框架及其库开发的,例如《战地2》、《加勒比海盗》等等。大多数开发人员更喜欢Python语言而不是其他编程语言,因为它具有许多功能...
阅读 6 分钟
在接下来的教程中,我们将借助示例来理解 Python 编程语言中的 reprlib 模块。让我们开始吧。理解 Python 中的 reprlib 模块 Python reprlib 模块提供了一种方法,用于生成限制了结果大小的对象表示...
阅读 3 分钟
滑动拼图是一种流行的益智游戏,涉及在棋盘上滑动图块以将它们重新排列成特定的顺序。Python 中的滑动拼图 滑动拼图游戏也称为滑动拼图或滑动块游戏。在本文中,我们将构建一个...
7 分钟阅读
统计学中众数简介 在统计学中,给定数据值集中出现频率最高的值称为众数。换句话说,出现频率高或重复出现的数字或值称为众数或...
阅读 4 分钟
二维码是一种条形码,数字设备可以轻松读取,并以方格状排列的像素字符串的形式携带数据。由于许多智能手机都内置了二维码扫描器,因此二维码经常被使用...
阅读20分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India