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. 未完待续
  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/onefine/p/10499391.html
Copyright © 2011-2022 走看看