• 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"))
    

  • 相关阅读:
    leetcode 1. Two Sum
    leetcode 168. Excel Sheet Column Title
    [LeetCode] Water and Jug Problem 水罐问题
    leetcode 80 Remove Duplicates from Sorted Array II
    leetcode 239. Sliding Window Maximum
    文件处理
    python网络编程 之 twisted
    ICMP & ping & traceroute
    Java String 转整形
    Java 字符数字得到整数
  • 原文地址:https://www.cnblogs.com/rexcheny/p/9962155.html
Copyright © 2020-2023  润新知