码迷,mamicode.com
首页 > 编程语言 > 详细

python之反射

时间:2018-12-20 20:33:31      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:包含   对象   大牛   设置   bsp   子类   als   输入   else   

1. 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

2. 反射

主要是用到了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(没有这个功能)

 

python之反射

标签:包含   对象   大牛   设置   bsp   子类   als   输入   else   

原文地址:https://www.cnblogs.com/q455674496/p/10151745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!