1. isinstance, type, issubclass的區別 2. 反射 主要是用到了4個函數( 用的最多的就是getattr()和 hasattr() ): getattr() 從xxx對象中獲取到xxx屬性值 hasattr() 判斷xxx對象中是否有xxx屬性值 delattr() 從 ...
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('沒有這個功能')