提问人:atskdev 提问时间:8/28/2023 最后编辑:shaik moeedatskdev 更新时间:8/28/2023 访问量:32
init 后自动调用类函数
Automatically calling class function after init
问:
我想自动执行一个类方法,该方法将在完成后立即调用。__init__
例如,
class A:
def __init__(self):
initialization statement
def post_init(self):
#this should be automatically called after completion of __init__ function.
some statement
我怎样才能做到这一点?
答:
0赞
warownia1
8/28/2023
#1
如果你想在之后自动运行这个类和所有继承类,你需要弄乱如何使用元类实例化对象。默认情况下,当你使用它的类时,会调用 a 来创建一个新对象,然后调用该对象的方法。您希望将 添加到该序列中post_init
__init__
__call__
A()
__new__
__init__
post_init
class MyMetaclass(type):
def __call__(cls, *args, **kwargs):
new_obj = type.__call__(cls, *args, **kwargs)
new_obj.post_init()
return new_obj
class A(metaclass=MyMetaclass):
def __init__(self):
print('init called')
def post_init(self):
print('post init called')
您可以验证
>>> A()
init called
post init called
<__main__A at 0x7f3988e2c6a0>
评论
self.post_init()
__init__
.post_init
__init__
post_init()
是一个耗时的函数,需要一段时间才能完成。并且该类将作为属性实例化到另一个类中。因此,如果我在 init() 中使用它,那么在两个方法都完成执行之前,我无法实例化该类。init()
__is_fully_initialized