首页 > 解决方案 > 初始化后如何自动调用特定的类方法?

问题描述

假设我有课

class NewSettingsAdded:  # type: NewSettingsAdded
    def __init__(self, system: str, org_id: ):

        self.system = system
        self.org_id = org_id

    def find_head_organization(self):
        "do some prepare"

    def process(self):
    " process"

我想在实例初始化后自动为自己调用 find_head_organization。我试图做类似的事情

class OrganisationCaller(type):
    def __call__(cls, *args, **kwargs):

        obj = type.__call__(cls, *args, **kwargs)
        obj.new_init()
        return obj


class NewSettingsAdded:  # type: NewSettingsAdded
    def __init__(self, system: str, org_id: int,):

    __metaclass__ = OrganisationCaller

    self.system = system
    self.org_id = org_id

    def find_head_organization(self):
        "do some prepare"

    def process(self):
        " process"

但是在这种方法中,它会在初始化后调用所有方法

标签: pythonpython-3.x

解决方案


如果您的目标是“在类实例化时自动执行”对象,只需将 self.run() 放入 init 中:

def __init__(self):
    self.bar = 1
    self.run()

推荐阅读