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):
...
类awd
和fwd
可以在不同时间实例化,或者只能实例化其中之一。现在,有没有办法限制基类方法 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/