程式語言: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
留言
張貼留言