1.isinstance, type, issubclass 的含義
isinstance: 判斷你給物件時候是xxx型別的.(向上判斷)
type: 返回xxx物件的資料型別
issubclass: 判斷xxx類是否xxx的子類
class Animal:
def eat(self):
print(“剛睡醒吃點兒東西”)
class Cat(Animal):
def play(self):
print(“貓喜歡玩兒”)
c = Cat()
print(isinstance(c, Cat)) # c是一隻貓
print(isinstance(c, Animal)) # 向上判斷
a = Animal()
print(isinstance(a, Cat)) # 不能向下判斷
print(type(a)) # 返回 a的資料型別
print(type([]))
print(type(c)) # 精準的告訴你這個物件的資料型別
# 判斷.xx類是否是xxxx類的子類
print(issubclass(Cat, Animal))
print(issubclass(Animal, Cat))
def cul(a, b): # 此函式用來計算數字a和數字b的相加的結果
# 判斷傳遞進來的物件必須是數字. int float
if (type(a) == int or type(a) == float) and (type(b) == int or type(b) == float):
return a + b
else:
print(“對不起. 您提供的資料無法進行計算”)
print(cul(a, c))
2.如何區分方法和函式(程式碼)
在類中:
例項方法
如果是類名.方法 == 是函式
如果是物件.方法 == 是方法
from types import MethodType, FunctionType
3.反射(重要)
attr: attribute
getattr()
從xxx物件中獲取xxx屬性
hasattr()
判斷xxx隊形中是否有xxx屬性
delattr()
從xxx物件中刪除xxx屬性
setattr()
設定xxx物件中xxx屬性為xxxx值
class Person:
def __init__(self, name, laopo):
self.name = name
self.laopo = laopo
p = Person(“寶寶”, “林志玲”)
print(hasattr(p, “laopo”)) #
print(getattr(p, “laopo”)) # p.laopo
setattr(p, “laopo”, “胡一菲”) # p.laopo = 胡一菲
setattr(p, “money”, 100000000000) # p.money = 100000000
print(p.laopo)
print(p.money)
delattr(p, “laopo”) # 把物件中的xxx屬性移除. != p.laopo = None
print(p.laopo)