对于给定的类,覆盖一种方法(即为其分配另一个函数(或从该类派生并在新类中覆盖它是更好/更高级/更符合 Python Zen 的
。所以这个:
from foo import Bar
def mybaz(self):
pass
Bar.baz = mybaz
或:
from foo import bar
class Mybar(Bar):
def baz(self):
pass
如果它有区别,请参考 Python3
追问:魔术方法的答案不同吗?
第二种方式更可取,因为它不会改变基类,而是扩展它,看看开放/封闭原则。