程式語言:Python
官方文件
簡介:功能說明
inspect — Inspect live objects
官方文件
簡介:功能說明
- # in test.py
- '''test'''
- __all__ = ['c1', 'f4']
- class c1:
- '''test class'''
- var1 = 1
- def f1(self, a, b=1):
- pass
- class d(c1):
- pass
- def f2():
- a = 1
- def cf2():
- print(a)
- return cf2
- def f3(name:str, age:(1, 99), species:'狗狗的品種') -> tuple:
- return (name, age, species)
- def f4(a, b, *, c, d=2):
- pass
- print(__name__)
- # __main__
- print(c1.__name__)
- # c1
- print(c1.f1.__name__)
- # f1
- print(__file__)
- # test.py
- print(__doc__)
- # test
- print(c1.__doc__)
- # test class
- print(c1.__dict__)
- # {'__weakref__': <attribute '__weakref__' of 'c1' objects>, '__doc__': 'test class', '__module__': '__main__', 'f1': <function c1.f1 at 0x0000000002FD7840>, 'var1': 1, '__dict__': <attribute '__dict__' of 'c1' objects>}
- print(c1.__base__)
- # <class 'object'>
- print(c1.f1.__qualname__)
- # c1.f1
- print(d.__mro__)
- # (<class '__main__.d'>, <class '__main__.c1'>, <class 'object'>)
- print(c1.__subclasses__())
- # [<class '__main__.d'>]
- print(c1.f1.__module__)
- # __main__
- print(c1.f1.__defaults__)
- # (1,)
- print(c1.f1.__code__)
- # <code object f1 at 0x00000000028B8D20, file "test.py", line 9>
- print(c1.f1.__globals__)
- # {'__cached__': None, 'c1': <class '__main__.c1'>, 'f3': <function f3 at 0x0000000002FD77B8>, '__package__': None, 'f2': <function f2 at 0x000000000282A048>, '__name__': '__main__', '__spec__': None, '__all__': ['c1', 'f4'], '__builtins__': <module 'builtins' (built-in)>, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000000028B6DD8>, '__doc__': 'test', '__file__': 'test.py', 'd': <class '__main__.d'>, 'f4': <function f4 at 0x0000000002FD78C8>}
- print(f2().__closure__[0].cell_contents)
- # 1
- print(f3.__annotations__)
- # {'name': <class 'str'>, 'species': '狗狗的品種', 'age': (1, 99), 'return': <class 'tuple'>}
- print(f4.__kwdefaults__)
- # {'d': 2}
- print(c1().f1.__self__)
- # <__main__.c1 object at 0x0000000002FDEDA0>
Magic Attributes
- definition.__name__
- 本身的名字
- 可用來分辨 module 直接執行 or 被 import
- 直接執行
- "__main__"
- 被 import
- 本身的 module 名
- definition.__doc__
- 本身註解
- definition.__qualname__
- 本身的名字,含引用
- definition.__module__
- 本身所在的 module
- module.__file__
- 本身路徑,可搭配 os.path 使用
- module.__all__
- 限定 from module import * 的屬性
- class.__bases__
- class 繼承的 parent
- class.__mro__
- 尋找方法的順序(Method Resolution Order,或 MRO)
- class.__subclasses__()
- 繼承本身的子代 class
- object.__dict__
- object 的變數與函式
- instance.__class__
- instance 所屬的 class
- function.__defaults__
- 本身的默認參數
- function.__code__
- 已編譯的函數對象
- function.__globals__
- 全域變數
- function.__closure__
- 閉包包含的自由變量
- function.__annotations__
- 參數的註釋
- function.__kwdefaults__
- 強制關鍵字參數的 default 值
- method.__self__
- 本身所屬的 instance
Built-in Functions
參考
Data Modelinspect — Inspect live objects
留言
張貼留言