• Python自省


    自省就是通过一定机制查询到对象的内部结构,也就是运行时获取对象内部的属性以及类型,在Python中
    dir(),type(), hasattr(), isinstance()都是很好的自省例子

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    class Person:
        name = "人类"
    
    
    class Student(Person):
        def __init__(self, school_name):
            self.school_name = school_name
    
    
    if __name__ == "__main__":
        s = Student("清华大学")
        # 通过__dict__查询属性
        print(s.__dict__)
        s.__dict__["school_addr"] = "北京市 海淀区"  # 动态添加一个属性
        print(s.__dict__["school_addr"])   # 获取属性方式1
        print(s.school_addr)  # 获取属性方式2
    
        print(dir(Student))  # 查看对象有什么属性
        # s会比Student多2个属性,一个是 school_name 和 school_addr 因为 s是实例,实例化的时候才会执行 init 方法,而类Student自己不会执行init方法
        print(dir(s))  
        print("
    ")
        print("Student类是否有 __init__ 属性:", hasattr(Student, "__init__"))  # 判断对象是否有某种属性
        print("s对象是否有 __init__ 属性:", hasattr(s, "__init__"))
        print("Student类是否有 school_name 属性:", hasattr(Student, "school_name"))
        print("s对象是否有 school_name 属性:", hasattr(s, "school_name"))
    

  • 相关阅读:
    抽象类 C#
    多态
    父类与子类的转换as,is
    try catch finally 与continue的使用
    封装、多态、继承
    new关键字 、this关键字、base关键字
    进程的使用
    Spring IOC
    使用annotation配置hibernate(3):一对一关系配置
    使用annotation配置hibernate(3):多对多关系配置
  • 原文地址:https://www.cnblogs.com/rexcheny/p/9962155.html
Copyright © 2020-2023  润新知