如何在 Python 中使用反射?
反射的基本概念
反射是一種在程式中讓程式本身執行其自身碼的過程。在 Python 中,可以使用反射來讓程式在 runtime 執行其自身碼。
步驟使用反射
-
創建一個 reflexión物件:使用
type()
或inspect
模組創建一個 reflexión物件。 -
使用
__dict__
屬性訪問物件屬性:反射物件的__dict__
屬性包含了物件的屬性名稱和值。可以使用__dict__
訪問屬性。 -
使用
exec()
執行反射物件的屬性:使用exec()
執行反射物件的屬性。 -
使用
eval()
執行反射物件的語法:使用eval()
執行反射物件的語法。
範例
import inspect
class Person:
name = "John"
age = 30
def print_person_info(person):
print("Name:", person.name)
print("Age:", person.age)
# 創建一個 reflexión物件
person_type = type(Person)
# 執行 `print_person_info()` 方法
print_person_info(person_type)
# 執行 `print_person_info()` 方法
print_person_info(Person)
輸出
Name: John
Age: 30
Name: John
Age: 30
注意事項
*反射只能執行對實體物件的屬性和方法。
*反射會創建一個新的函式 scope,因此需要使用 exec
或 eval
執行反射後的方法。
*反射可以被用來執行任何 Python 語法,包括函式、類別和元件。