內建函式:1.isinstance:判斷乙個物件和乙個類有沒有血緣關係
class a:passclass b(a):pass
a =b()
print(isinstance(a,b)) #
true
print(isinstance(a,a)) #
true
print(type(a) is b) #
true
print(type(a) is a) #
false
2.issubclass(子類名,父類名):檢測繼承關係,返回true說明與繼承關係
class a:passclass b(a):pass
class c(b):pass
print(issubclass(c,b))#
true
print(issubclass(c,a))#
true
反射
中的名字,找乙個屬性直接就可以找到這個屬性的值,找乙個方法找到的是這個方法的記憶體位址。
反射的4個內建函式:
1.hasatter:判斷乙個命名空間裡是否有乙個屬性或方法
classa: role = '
person
'def
func(self):
print('
*'*self)
print(hasattr(a,'
r')) #
false
print(hasattr(a,'
role
')) #
true
print(hasattr(a,'
func
')) #
true
ret = input('
>>>')
ifhasattr(a,ret):
(getattr(a,ret))
ifhasattr(a,ret):
func =getattr(a,ret)
func(12)
2.getatter:從乙個命名空間裡獲取乙個屬性或方法的值,方法需要呼叫。
classa: role = '
person
'def
func(self):
print('
*'*self)
ret = input('
>>>')
print(getattr(a,'
role
')) #
從a的命名空間裡找乙個屬性,直接可以找到這個屬性的值
f = getattr(a,'
func
');f(3) #
從a的命名空間裡找乙個方法,找到的是這個方法的記憶體位址
a.func(1)
3.setatter:增加和修改
4.delatter:刪除
classa:
def__init__
(self,name):
self.name =name
defwahaha(self):
print('
wahahaha')
a = a('
alex')
#a.age = 18
#print(a.__dict__)
setattr(a,'
age',18) #
增加乙個屬性
print(a.__dict__) #
setattr(a,'
name
','taibao
') #
修改乙個屬性
print(a.__dict__)#
delattr(a,'
age') #
刪除乙個屬性
print(a.__dict__) #
內建方法
len()內建方法和內建函式__len__是對應的關係
classa:
def__init__
(self,name,age,***,cls):
self.name =name
self.age =age
self.*** =***
self.cls =cls
def__len__
(self):
return len(self.__dict__
)a = a('
alex
',18,'
man',2)
print(len(a)) #
4a.hobby = '燙頭'
print(len(a)) #
5
hash()內建方法和內建函式__hash__是對應的關係
classa:
def__init__
(self,name,age,***,cls):
self.name =name
self.age =age
self.*** =***
self.cls =cls
def__hash__
(self):
return 1a = a('
alex
',18,'
man',2)
print(hash(a)) #
1
物件導向之反射
反射 python中的反射功能是由以下四個內建函式提供 hasattr getattr setattr delattr,改四個函式分別用於對物件內部執行 檢查是否含有某成員 獲取成員 設定成員 刪除成員。class foo object def init self self.name wupeiqi...
Python物件導向 反射
1.什麼是反射 反射的概念是由smith在1982年首次提出的,主要是指程式可以訪問 檢修和修改它本身狀態或行為的一種能力 自省 這一概念的提出很快引發了計算科學領域關於應用反射性的研究。它率先被程式語言的設計領域所採用。3.可以實現自省的四個函式 舉個例子 class people country...
物件導向之反射
isinstance與issubclass是python的內建模組 isinstance class foo pass class boo pass foo obj foo boo obj boo print isinstance foo obj,foo true print isinstance ...