python - 如何限制基类方法只运行一次

标签 python oop

class car(object):
    def read_spec_and_populate_db():
        spec = read_from_file(spec.yaml)
        populate_db(spec)

class awd(car):
    super(awd, self).read_spec_and_populate_db()

    def foo(self):
    ...

class fwd(car):
    super(fwd, self).read_spec_and_populate_db()

    def bar(self):
    ...

awdfwd可以在不同时间实例化,或者只能实例化其中之一。现在,有没有办法限制基类方法 read_spec_and_populate_db() 只执行一次?

我在SO中查找并发现here 。想看看是否还有其他选择。

编辑:并不是说我反对。我正在寻找除了使用旗帜之外的想法。我当前的实现是在类中使用标志。

最佳答案

只需使用一个标志:

class car(object):
    db_read = False
    def read_spec_and_populate_db():
        if not car.db_read:
            spec = read_from_file(spec.yaml)
            populate_db(spec)
            car.db_read = True

现在您可以多次调用 read_spec_and_populate_db() 想。它只执行一次工作。

关于python - 如何限制基类方法只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320514/

相关文章:

java - String charAt() 方法在 Java 中如何工作?

java - 为什么在 Java 中变量在 ArrayList 重新分配时不会失效?

java - 在Java中如何使用接受其父类的单个函数处理所有子类

php - 关于在何处放置全局辅助函数的 OOP/MVC 建议

python - 浪费空间或内存泄漏 : Python

python - 查找 float 列表中最频繁出现的情况

Python subprocess.Popen() 等待完成

php - 条件语句是否属于 php mvc 中的模型或 Controller ?

python - 在 Keras 中多次调用 "fit_generator()"

Python:在循环中将元素添加到numpy数组的第二轴