跳到主要内容
版本:1.2.2

get_lazy_attribute

函数私有源码

attr: Any | None = get_lazy_attribute(
module: ModuleType, attr: str, parent: str
)

获取某个延迟加载模块的属性。该属性在实际用到之前不会加载。

若所提供的模块本身无效,返回None

危险

注意该函数所返回的属性需要是一个可调用(callable)值。准确来叔,该函数本来就是设计成用来获取某个延迟加载模块的延迟加载类。

参数

输入

参数类型必选
说明
moduleModuleType所要获取属性的延迟加载模块。
attrstr所要获取属性的属性名称。
parentstr所获得的属性将要添加到的目标父模块的名称。

输出

参数类型
说明
attrAny | None延迟加载的可调用属性。若该属性还未调用过,则该属性不会得到加载。若该属性无法检索到,返回None

范例

只在访问的时候加载某类

lazy_load_a_class.py
from typing import TYPE_CHECKING
from syncstream import utils

if TYPE_CHECKING:
import html
import html.parser as hparser
from html.parser import HTMLParser
else:
html = utils.lazy_import("html", package=None)
hparser = utils.lazy_import("parser", package="html", dependencies=("html",))
HTMLParser = utils.get_lazy_attribute(hparser, "HTMLParser", __name__)


print(html, hparser)
print(HTMLParser)
print(html, hparser)
print(HTMLParser())
print(html, hparser)