• 如何理解Python中的self变量?


    一个简单的例子

    代码

    class Person:
        def __init__(self, name):
            self.name = name  # 定义类的属性
    
        def think(self):  # self其实就是类函数think的一个普通参数而已,表示被调用的对象,参数具体值也即我们的实例对象
            print("{} is thinking".format(self.name))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    尝试使用两种方法输出看看

    wgw.think()
    wangguowei is thinking
    Person.think(wgw)
    wangguowei is thinking
    
    • 1
    • 2
    • 3
    • 4

    二者的深入理解

    查看两种方法是什么类?

    • 一个是类函数
    • 一个是实例的方法
    Person.think
    Out[14]: <function __main__.Person.think(self)>
    wgw.think
    Out[15]: <bound method Person.think of <__main__.Person object at 0x000000000543CEF0>>
    
    • 1
    • 2
    • 3
    • 4

    因self 其实就是类函数 think 的一个普通参数而已

    • 指被调用对象,参数具体值也即我们的实例对象

    通过==[实例.方法]==调用时候为什么不需要传递参数?

    该方法与当前实例对象进行了绑定,调用的时候

    • python会自动把实例对象作为参数传递过去
    • 不需要再传递参数

    系统理解self

    1、self只有在类的方法中才会有,其他函数或方法是不必带self的。
    2、在类的方法中(如__init__),第一参数永远是self,表示创建的类实例本身,而不是类本身。
    3、针对self参数在调用时不必传入相应的参数。
    4、可以把对象的各种属性绑定到self。
    5.self不是python的关键字,只是一个约定俗成的,也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。
    6、类中_init__()方法是一种特殊的方法,被称为类的初始化方法,如果存在初始化值的就需要。
    7、self 代表类的实例

  • 相关阅读:
    用动图详细讲解——栈
    【Vue】集成百度地图
    Vue组件template标签波浪线报错
    C#中LINQtoSQL只能在.NetFramework下使用,不能在.net 的默认安装下使用
    springboot项目打包优化,将所有第三方包单独打包至lib目录
    Day09--全局事件共享-在页面中使用store中的成员
    OBS使用
    dnmp运行时404报错
    Unity 快捷键的一些记录
    点成分享 | 结核杆菌培养基的制备全过程
  • 原文地址:https://blog.csdn.net/weixin_44943389/article/details/128194977