zoukankan      html  css  js  c++  java
  • 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"))
    

  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/rexcheny/p/9962155.html
Copyright © 2011-2022 走看看