zoukankan      html  css  js  c++  java
  • Python中关于‘self’的种种用法笔记

    方法中的 self 参数

    1. 给对象增加属性

    先来看个例子:

    class Cat:
        def eat(self):
            print("%s 爱吃鱼" % self.name)
    
    

    在 Python 中,要 给对象设置属性,非常的容易,但是不推荐使用

    tom.name = "Tom"
    lazy_cat.name = "大懒猫"
    

    因为:对象属性的封装应该封装在类的内部 只需要在 类的外部的代码 中直接通过 . 设置一个属性即可
    注意:这种方式虽然简单,但是不推荐使用!

    使用 self 在方法内部输出每一只猫的名字 由 哪一个对象 调用的方法,方法内的 self 就是 哪一个对象的引用 在类封装的方法内部,self 就表示 当前调用方法的对象自己 调用方法时,程序员不需要传递 self 参数 在方法内部 可以通过 self. 访问对象的属性 也可以通过 self. 调用其他的对象方法

    改造代码如下:

    class Cat:
        def eat(self):
            print("%s 爱吃鱼" % self.name)
    
    
    tom = Cat()
    # tom.eat()
    # 给对象临时增加属性
    tom.name = "Tom" 
    # 现在调用就没问题
    tom.eat()
    lazy_cat = Cat()
    lazy_cat.name = "大懒猫"
    lazy_cat.eat()
    

    运行结果如下:
    “”"
    Tom 爱吃鱼
    大懒猫 爱吃鱼
    “”"

    在 类的外部,通过 变量名. 访问对象的 属性和方法
    在 类封装的方法中,通过 self. 访问对象的 属性和方法
    在类的外部给对象增加属性
    将案例代码进行调整,先调用方法 再设置属性,观察一下执行效果

    python tom = Cat()
    tom.drink()
    tom.eat()
    tom.name = "Tom"
    print(tom)
    
    # 程序执行报错如下:
    # AttributeError: 'Cat' object has no attribute 'name' 属性错误:'Cat' 对象没有 'name' 属性
    

    提示

    • 在日常开发中,不推荐在 类的外部 给对象增加属性
    • 如果在运行时,没有找到属性,程序会报错
    • 对象应该包含有哪些属性,应该 封装在类的内部
    1. 未完待续
  • 相关阅读:
    window.print()分页打印
    获取输入框中光标位置
    JavaScript数据结构与算法描述-队列
    .NET中获取IP地址
    记录一次排查C#使用UI Automation获取程序元素的bug
    虚拟机为win server 2012 添加新磁盘
    为halo博客添加ssl证书(配合nginx反向代理)
    初学nginx反向代理
    公告时间轴
    hackthebox-Archetype
  • 原文地址:https://www.cnblogs.com/onefine/p/10499391.html
Copyright © 2011-2022 走看看