“常规”函数在python中调用函数之前

问题描述 投票:0回答:1

世界!

我正在python中创建一个名为FBST的类。它具有以下属性:

class FBST:

    def __init__(self, x, verbose=False):

        self._rejected_met = []
        self._acceptance_met = []
        self._acceptance_bar = []
        self._rejected_bar = []
        self.x = x
        self.verbose = verbose

如您所见,它有4个不同的列表。这四个列表存储有关称为_chain()的功能的信息。每次我调用chain()方法时,我都必须“清理”这4个列表,然后将它们中的每个重新转换为一个空列表。我正在使用以下代码进行清理


def chain(self):

    #cleaning the attributes
    for att in dir(self):
        if att.startswith("_"):
            setattr(self, att, [])

在函数开始时,是否有更多“ pythonic”方法可用于此循环?

python oop pep8
1个回答
1
投票

而不是根据变量的特定命名约定,将它们放在字典中。

class FBST:

    def __init__(self, x, verbose=False):
        self.acc_rej = {
            "rejected_met": [],
            "accepance_met": [],
            "rejected_bar": [],
            "acceptance_bar": []
        }
        self.x = x
        self.verbose = verbose

    def chain(self):
        for key in self.acc_rej:
            self.acc_rej[key] = []
        ...
© www.soinside.com 2019 - 2024. All rights reserved.