模組也是一等物件
globals():返回乙個字典,表示當前的全域性符號表。這個符號表始終針對當前模組(對函式或方法來說,是指定義它們的模組,
而不是呼叫他它們的模組)
# test_02.py
gol_num = 3
def a():
print('a')
def b():
print('b')
def c():
print('c')
if __name__ == '__main__':
resu = [k_v for k_v in globals().items()]
print(resu)
# for name in globals().items():
# print(name) error: runtimeerror: dictionary changed size during iteration
輸出:
[('__name__', '__main__'), ('__doc__', none), ('__package__', none), ('__loader__', <_frozen_importlib_external.sourcefileloader object at 0x0000026a265f4880>), ('__spec__', none), ('__annotations__', {}), ('__builtins__', ), ('__file__', 'e:\\pyproject\\homework\\20220201\\test_02.py'), ('__cached__', none), ('gol_num', 3), ('a', ), ('b', ), ('c', )]
import inspect
# 被檢查的模組
import test_02
if __name__ == '__main__':
# inspect.getmembers(module_name, inspect.isfunction): 注意:第乙個引數是模組名稱, 第二個引數沒有()
# name: 函式名字, func: test_02中的函式物件
for name, func in inspect.getmembers(test_02, inspect.isfunction):
print(f"name:, func:")
# 呼叫test_02.py 中的函式
func()
out:
name:a, func:a func ran
name:b, func:b func ran
name:c, func:c func ran
究竟是內省還是內省
下面我們就對內省做一下簡單介紹 通過propertydescriptor類操作bean的屬性 通過introspector類獲得bean物件的 beaninfo,然後通過 beaninfo 來獲取屬性的描述器 propertydescriptor 通過這個屬性描述器就可以獲取某個屬性對應的 gett...
java反射 內省
本文所說的類是類對應的class的例項,其實類本身就是class的例項。1 類是class的例項,通常的物件是類的例項。2 根據類名 類的例項 類的屬性都能獲取到類。3 如果類有無參的建構函式,根據類能反射出該類的乙個例項,如果有有參的建構函式則根據類獲取引數型別獲取建構函式,再根據建構函式反射出類...
NSObject 內省方法
內省 introspection 是物件導向語言和環境的乙個強大特性,objective c和cocoa在這個方面尤其的豐富。內省是物件揭示自己作為乙個執行時物件的詳細資訊的一種能力。這些詳細資訊包括物件在繼承樹上的位置,物件是否遵循特定的協議,以及是否可以響應特定的訊息。nsobject協議和類定...