一、反射的方法:
hasattr
(obj,name_str)
:# 判斷 object 是否有 name_str 這個方法或者屬性
getattr
(obj,name_str)
:# 獲取 object 物件與 name_str 同名的方法或者函式
setattr
(obj,name_str,value)
:# 為 object 物件設定乙個同名的方法或者屬性
delattr
(obj,name_str)
:# 刪除 object 物件中的 name_str 方法或者屬性
二、方法的簡單介紹:
getattr :
class
user
:def
__init__
(self, username)
: self.username = username
defget_user
(self)
:return self.username
# 例項化乙個物件:
u = user(
"mouse"
)# 使用者想呼叫的方法
method =
"get_user"
# 通過 hasattr 判斷屬性或方法是否存在
ifhasattr
(u,method)
:# func 接收
func =
getattr
(u,method)
# 執行
print
(func())
else
:print
("操作有誤,請重新輸入"
)>>
>> 輸出結果:
mouse
setattr :def
hello
(self)
:print
("hello 方法被呼叫了"
)class
user
:pass
u = user(
)# 裝飾乙個方法或屬性 , 此處裝飾的是乙個 hello 方法
setattr
(u,"hello"
,hello)
func =
getattr
(u,"hello"
)func(u)
>>
> 輸出:
hello 方法被呼叫了
delattr :class
user
:def
__init__
(self,name)
: self.name = name
defeat(self)
:print
('%s 正在吃夜宵 ...'
%self.name)
defrun
(self)
:print
('%s 正在跑步中 ...'
%self.name)
choice =
input
('>>>:'
)c = user(
'胖毛'
)# 這裡以刪除name屬性為例
print
(c.name)
try:
# 先判斷屬性是否存在,存在就刪除
ifhasattr
(c,choice)
:delattr
(c,choice)
else
:pass
print
(c.name)
# 捕獲沒有屬性丟擲的異常
except attributeerror:
print
('刪除%s成功'
%choice)
C 反射學習
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...
Java反射學習
應用在一些通用性較高的 中 框架的底層基於反射 在框架開發中,都是基於配置檔案開發,在配置檔案中配置子類,可以通過反射得到類中的所有內容,可以讓類中的某個方法執行 類中的所有內容 屬性 沒有引數的構造方法 有引數的構造方法 普通方法,都可以通過反射機制動態獲得。那麼接下來就看看怎麼通過反射來獲得類中...
php 反射學習
早知道php 有反射的概念一直沒抽出空來。今天看書裡面有個這玩意 弄個例子搞搞。不過似乎專案中用處不大。印象中似乎就 thinkphp 3.1 裡面的 控制器呼叫使用了反射 class person public function set name value public function get...