zoukankan      html  css  js  c++  java
  • 21 Python之反射

    1.反射

    主要是用到了4个函数(  用的最多的就是getattr()和 hasattr()  ):

    getattr()   从xxx对象中获取到xxx属性值

    hasattr()  判断xxx对象中是否有xxx属性值
    delattr()   从xxx对象中删除xxx属性
    setattr()  设置xxx对象中的xxx属性为xxxx值

    # 这是master.py中的内容
    def chi():
        print('大牛很能吃')
    def he():
        print('大牛很能喝 ')
    def shui():
        print('大牛很能睡 ')
    def play():
        print('大牛很能玩 ')
    def work():
        print('大牛很能工作 ')
    
    #调用
    import master  #  引用master.py
    print(dir(master))
    while 1:
        content = input("请输入要测试的功能:")
        if hasattr(master, content): # 判断xxx对象中是否包含了xxxx
            xx = getattr(master, content) # 从xxx对象中获取到xxx属性值
            xx()
            print('有这个功能')
        else:
            print('没有这个功能')

    2.isinstance, type, issubclass的区别

    class Animal:
        def eat(self):
            print("刚睡醒吃点儿东西")
    
    class Cat(Animal):
        def play(self):
            print("猫喜欢玩儿")
    
    c = Cat()
    print(isinstance(c, Cat)) # c是一只猫   True
    print(isinstance(c, Animal)) # 向上判断 True
    
    a = Animal()
    print(isinstance(a, Cat)) # False     不能向下判断 
    
    print(type(a)) # 返回 a的数据类型 <class '__main__.Animal'>
    print(type([])) # <class 'list'>
    print(type(c)) # 精准的告诉你这个对象的数据类型  <class '__main__.Cat'>
    
    # 判断.xx类是否是xxxx类的子类
    print(issubclass(Cat, Animal)) # True
    print(issubclass(Animal, Cat)) # False
  • 相关阅读:
    (转)怎样获得与激活Windows 7超级管理员权限
    (转) C代码优化方案
    英语词汇立体记忆 02
    (转)LUA和C之间的函数调用
    通过lua自带例子学习lua 01
    英语词汇立体记忆 01
    反射(类加载内存分析)
    反射(类加载器的作用)
    反射(动态创建对象操作属性)
    反射(分析类初始化)
  • 原文地址:https://www.cnblogs.com/a2534786642/p/10152712.html
Copyright © 2011-2022 走看看