isinstance與issubclass是python的內建模組:
# isinstance
class
foo:
pass
class
boo:
pass
foo_obj = foo(
)boo_obj = boo(
)print
(isinstance
(foo_obj, foo)
)# true
print
(isinstance
(boo_obj, foo)
)# false
#issubclass
class
father
:pass
class
sub(father)
:pass
class
foo:
pass
print
(issubclass
(sub,father)
)#true
print
(issubclass
(foo,father)
)#false
反射指的是通過 「字串」 對 物件的屬性進行操作。
注意: 反射的四個方法是python內建的。
class
foo:
def__init__
(self,x,y)
: self.x = x
self.y = y
foo_obj = foo(10,
20)#hasattr 通過字串x 判斷物件中是否有 x屬性
print
(hasattr
(foo_obj,
'x')
)#true
print
(hasattr
(foo_obj,
'z')
)#false
#getattr 通過 字串 獲取物件的屬性或方法
print
(getattr
(foo_obj,
'x')
)#10
#若屬性不存在,則返回預設值
res =
getattr
(foo_obj,
'z',
'預設值'
)print
(res)
#預設值
#setattr
# 為foo_obj設定乙個屬性z,值為30
setattr
(foo_obj,
'z',30)
print
(hasattr
(foo_obj,
'z')
)#true
#delattr
delattr
(foo_obj,
'z')
print
(hasattr
(foo_obj,
'z')
)#false
反射應用:
class
filecontrol
:def
run(self)
:while
true
: user_input =
input()
.strip(
)# 通過使用者輸入的字串判斷方法是否存在,然後呼叫相應的方法
ifhasattr
(self,user_input)
: func =
getattr
(self,user_input)
func(
)else
:print
('輸入有誤'
)def
upload
(self)
:print
('檔案正在上傳'
)def
download
(self)
:print()
filecontrol_obj = filecontrol(
)filecontrol_obj.run(
)
物件導向之反射
反射 python中的反射功能是由以下四個內建函式提供 hasattr getattr setattr delattr,改四個函式分別用於對物件內部執行 檢查是否含有某成員 獲取成員 設定成員 刪除成員。class foo object def init self self.name wupeiqi...
物件導向之反射運用
import sysclass apache object def init self,tcp self.tcp tcp defstart self print apache is starting,host id is s self.tcp defstop self print apache is...
物件導向 反射
內建函式 1.isinstance 判斷乙個物件和乙個類有沒有血緣關係class a pass class b a pass a b print isinstance a,b true print isinstance a,a true print type a is b true print ty...