`
星IT辰
  • 浏览: 12724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python为什么要self

阅读更多

原文地址:http://sjolzy.cn/Why-should-self-Python.html

Python要self的理由

Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)

为何Python给self赋值而你不必给self赋值?

例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)

这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。

实例:

class Python: 
def selfDemo(self): 
print('Python,why self?')
p = Python()
p.selfDemo()

输出:Python,why self?

把p.selfDemo()带个参数如:p.selfDemo(p),得到同样的输出结果

如果把self去掉的话,

class Python: 
def selfDemo():  
print('Python,why self?')
p = Python()
p.selfDemo()

 这样就报错了:TypeError: selfDemo() takes no arguments (1 given)

 

扩展

self在Python里不是关键字。self代表当前对象的地址,self 其实就是class中instance,譬如static method 是不需要加self的, 譬如non-static method 有时候用className.method() 也是可以的。self能避免非限定调用造成的全局变量。

分享到:
评论

相关推荐

    Python Basics A Self-Teaching Introduction_teaching_python_

    《Python Basics A Self-Teaching ...通过《Python Basics A Self-Teaching Introduction》这本书,读者将逐步掌握这些基础知识,从而能够编写出功能丰富的Python程序,并为更高级的Python编程打下坚实基础。

    Python中为什么要用self探讨

    Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象...

    Python Basics: A Self-Teaching Introduction

    Python Basics: A Self-Teaching Introduction By 作者: H. Bhasin ISBN-10 书号: 1683923537 ISBN-13 书号: 9781683923534 出版日期: 2018-12-17 pages 页数: (604) Python has become the language of choice ...

    python 中-self-标识符和self标识符.docx

    在这个例子中,`print_attribute`方法的第一个参数`self`在调用时不需要显式传递,因为Python会自动将其设置为调用方法的实例(即`my_instance`)。通过`self`,我们可以在方法内部访问`my_attribute`。 接下来,`_...

    详解Python self 参数

    我们在使用 Python 中的 方法 method 时,经常会看到 参数中带有 self,但是我们也没对这个参数进行赋值,那么这个参数到底是啥意思呢? 2、知识点 2.1 成员函数(m) 和 普通方法(f) Python 中的 “类方法” 必须有一...

    Python中的self用法详解

    在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。 class是面向对象的设计思想,instance(也即是...

    self_test_python_self_

    总的来说,这个压缩包文件`self_test_python_self_`提供了关于使用Python和Celery实现异步任务处理以及邮件发送的实际应用案例。掌握这些技能对于任何需要后台任务处理和自动化通信的IT专业人员来说都是非常有价值的...

    python定义类self用法实例解析

    在定义类的过程中,无论是显式的创建类的构造方法,还是向类中添加实例方法,都要将self参数作为方法的第一个参数。 class Person: def __init__(self): print(“正在执行构造方法”) def study(self, name): print...

    Python库 | self_messages-8.0-py3-none-any.whl

    标题中的"Python库 | self_messages-8.0-py3-none-any.whl"指的是一个针对Python编程语言的库,名为`self_messages`,版本为8.0。这个库以`.whl`格式提供,这是一种预编译的Python软件包分发格式,用于简化安装过程...

    SingleLinkList_python数据结构单链表函数_

    在Python编程中,单链表是一种基础且重要的数据结构,用于存储有序的元素序列。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。在这个"SingleLinkList_python数据结构单链表函数_"主题中...

    Python连连看小游戏源代码

    - **性能优化**:合理设计数据结构和算法,减少不必要的计算,提高游戏运行效率。 - **游戏难度调整**:可以通过改变图片的数量、大小、初始布局等方式调整游戏难度。 - **多玩家模式**:可以考虑实现双人对战或...

    Python self用法详解

    Python解释器会自动为`study`方法提供`self`参数,使得`study`方法能够知道是`zhangsan`或`lisi`在调用它。输出会显示每个对象的内存地址以及学习状态。 在类的构造函数(`__init__`)中,`self`同样代表新创建的类...

    python实现的单链表

    5. **修改**:要修改链表中的某个值,首先需要找到该值的节点,然后更新其`data`属性。 ```python def update(self, old_value, new_value): node = self.search(old_value) if node: node.data = new_value ...

    用 Python 从头实现一个神经网络(附代码)

    这里我们以一个简单的两层神经网络为例,包括一个输入层、一个隐藏层和一个输出层。 在 Python 中,我们首先需要导入必要的库,如 numpy 用于矩阵运算,以及 matplotlib 用于可视化。下面是一段导入库的代码: ```...

    python例句10000条

    Python是一种广泛使用的高级编程语言,以其易读性、简洁的语法和强大的功能而闻名。"python例句10000条"这个资源是学习Python语法和实践操作的理想材料,涵盖了Python的基础到进阶概念。这里我们将深入探讨其中的...

    Python入门基础教程PPT全套资料.zip

    Python代码以缩进为块,这与其他很多语言(如C++或Java)的花括号{}不同。这种设计使得Python代码看起来更加整洁,易于理解。此外,Python支持多种数据类型,包括但不限于整数(int)、浮点数(float)、字符串(str...

    浅谈Python类中的self到底是干啥的

    在Python编程语言中,类是创建对象的基础,而`self`是一个特殊参数,它在类的方法中扮演着至关重要的角色。本文将深入探讨`self`的含义、作用以及如何在实际编程中正确使用它。 首先,`self`并非Python的保留关键字...

Global site tag (gtag.js) - Google Analytics