Python中自我的四个秘密分别是什么

介绍

这篇文章给大家介绍Python中自我的四个秘密分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

自我的谜团

毫无疑问,几乎每一门Python课程都有一个关于(类)类的讲座,终止,和终止,面向对象编程语言的基本构建模块之一。

当您通过一些示例学习它时,您将注意到在Python类中定义的许多函数都将自我作为它们的第一个参数,例如,在下面的代码片段中,我们声明了一个名为学生的类,它的问候()方法的第一个参数是自我。但是,函数根本没有使用自我,所以这里的自我到底是从哪里来的呢?这对许多初学者来说是第一个谜。

<>之前在祝辞祝辞,class ,学生:,,,,,,,def 迎接(自我,,名字):,,,,,,,,,,,印刷(& # 39;Good 早晨,,& # 39;,+,名字),…,,在祝辞祝辞,student =,学生(),在祝辞祝辞,student.greet(& # 39;约翰# 39;),Good ,早上,约翰。

同样奇怪的是,当我们使用这个函数时,我们并没有给自己参数设置任何东西,这是困扰我们的另一个谜题。在这篇文章中,我们将与学习者分享一些Python中自我的奥秘。

癙ython中自我的四个秘密分别是什么"

1。它代表什么?

在开始处理这个谜题之前,我们需要理解两个基本的相关概念:类和实例。当然,解决所有这些谜题需要额外的知识,而不仅仅是类和实例,我将在接下来的讨论中澄清这一点。如果你对这两个概念都很了解,你可以跳过下一段,这段只是对这两个概念的简要概述。

创建Python类就是声明一种新的对象类型,它提供了一种将数据和功能捆绑在一起的机制。在上面的示例中,我们创建了一个名为Student的类,并使用它创建了一个名为Student的学生类型的对象。这个对象被称为student类的实例。此外,类还可以提供通常称为属性的特定功能,例如示例中的greet()函数。我们使用三个内省(introspection)函数(type()、isinstance()和hasattr())来检查相关信息。

> type(Student)  >> type(student)  >> isinstance(student, Student) True >> hasattr(Student, 'greet') True

我可以简单地告诉您,greet()函数中的self参数是上面示例中的student实例。更一般地说,是实例调用这个函数。以下是支持证据:

> class Student: ...     def greet(self, name): ...         print(id(self)) ...         print('Good Morning, ' + name) ...  >> student = Student() >> student.greet('John') 4546580944 Good Morning, John >> id(student) 4546580944

在上面的代码中,我们修改了greet()函数,要求它使用内省id()函数向我们显示self参数的内存地址。如您所见,self参数和实例student是同一个对象,因为它们具有相同的内存地址。

Python中self的四个秘密分别是什么

2. 为什么不需要在函数调用中设置它呢?

继续上一节中展示的示例,当我们使用实例学生调用问候()函数时,这个函数通常被称为实例方法,终止,和不明,一个对某个类的实例可用的函数。但是,如果我们检查这个属性的类型,就会显示一些不同的东西。

<>之前在祝辞祝辞,student =,学生(),在祝辞祝辞,student.greet  & lt; bound  method  student.greet  of  & lt; __main__.Student  object  at  0 x10eff5750>在

如上所述,实例学生的问候属性称为绑定方法。具体来说,它被绑定到学生类的迎接属性。

为了准确理解这意味着什么,让我们看看下面的代码:

<>之前在祝辞祝辞,Student.greet(学生,,& # 39;约翰# 39;),Good ,早上,约翰。

结合开头的示例,您可能会注意到这段代码中的三件事:

<李>

这个函数的调用者是类的学生,而不是实例学生。

<李>

在这个调用中设置了自我和名字参数,这与学生调用初始函数时忽略自我参数不同。

<李>

两个函数调用都产生了相同的输出。它们本质上用的是同一个函数。

通过实现这些信息,您可能已经猜到在使用实例学生调用问候()函数时,幕后发生了什么。

Python中自我的四个秘密分别是什么