【发布时间】:2015-05-26 18:26:19
【问题描述】:
假设我有一个 A 类,它有一堆方法,但我希望它在调用每个方法之前和之后运行某些行。 例如:我希望我的 Dog 类在每次调用 bark() 或 run() 时运行 before() 和 after()。
class Dog():
def __init__(self, sound, speed):
self.sound = sound
self.speed = speed
def before(self):
check_some_things(self)
def after(self):
do_some_things(self)
def bark(self):
sound(self.sound)
def run(self):
move(self.speed)
【问题讨论】:
-
如果这些要被硬编码到你的类中,为什么不把它们硬编码到方法中呢?所以在
sound(self.sound)之前有self.before()。 -
假设我有 20 个方法,我觉得在每个方法的第一行/最后一行运行相同的代码很愚蠢。更重要的是,让我们想象一下 MegaDog 是 dog 所固有的,我也希望对 MegaDog 的方法运行 before()/after()。
-
我不确定,但我们可以在这里使用上下文管理器,因为它有一种干净的方式来执行任何方法的开始和结束方法。
标签: python oop polymorphism