当前位置: 首页 > article >正文

python继承和反射

python继承和反射

继承

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.sleep()  # 先调用子类的方法,没有调用父类的方法,没有就报错。

    def sleep(self):
        print("Animal sleep ...")

    def eat(self):
        print("Animal eat ...")
        
# 子类继承Animal父类
class Dog(Animal):
    # def sleep(self):
    #     print("Dog sleep ...")
    pass

Dog("旺财", 3)
  • 注意Animal的__init__方法中的self.sleep函数会首先调用Dog类中重新的sleep方法,这里被注释掉了,进而调用父类中的sleep方法。

反射

class Animal:
    def __init__(self, name, age, func_str):
        self.name = name
        self.age = age
        func = getattr(self, func_str) # 寻找self的func_str方法
        func()

    def sleep(self):
        print("Animal sleep ...")

    def eat(self):
        print("Animal eat ...")


class Dog(Animal):
    def sleep(self):
        print("Dog sleep ...")
        
# 传入函数名,指定执行函数
Dog("旺财", 3, func_str="sleep")
  • 注意getattr函数会先充子类寻找指定的func_str函数名,子类没会从父类中寻找,直到超类(基类object)缺失则报错。

http://www.kler.cn/a/409630.html

相关文章:

  • 【Electron学习笔记(二)】基于Electron开发应用程序
  • 数据库-基础理论
  • NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案
  • 七天掌握SQL--->第四天:事务处理与并发控制
  • Odoo :免费且开源的农牧行业ERP管理系统
  • 学习python的第十三天之函数——函数的返回值
  • 今天你学C++了吗?——C++中的类与对象(第二集)
  • w~视觉~3D~合集3
  • 1、数据结构概述及顺序表(附:可以直接打印显示的源码)
  • 网络协议之UDP
  • 【Andriod ADB基本命令总结】
  • 【AI系统】谷歌 TPU v1-脉动阵列
  • npm命令报错
  • 【Java 学习】构造器、static静态变量、static静态方法、static构造器、
  • R语言处理JSON文件
  • 解决登录Google账号遇到手机上Google账号无法验证的问题
  • 一个高度可扩展的 Golang ORM 库【GORM】
  • git仓库:循环所有提交、查找有无指定文件名
  • Docker--通过Docker容器创建一个Web服务器
  • 使用 Volta 管理 Node.js 版本
  • Android 项目引入gradle Connect timed out
  • 9款电子合同平台性价比深度分析
  • 数据分析-机器学习-第三方库使用基础
  • 内存不足引发C++程序闪退崩溃问题的分析与总结
  • 设计模式:7、策略模式(政策)
  • SpringBoot源码解析(五):准备应用环境