Python: 是否可以override/extend一个class的实例方法用于另一个class?
Python: Is it possible to override/extend an instance method of one class when it is used in another class?
我正在计划一个 Python 项目。我将让 classes 使用其他 classes 的实例。是否可以从另一个 class 中 override/extend 一个方法,像这样:
class Foo:
a = Bar()
b = Bar()
c = Bar()
class Baz:
x = Bar()
y = Bar()
z = Bar()
class Qux:
p = Bar()
q = Bar()
r = Bar()
class Bar:
def __init__(self):
pass
def do_something():
# Thing to do
Baz.x.do_something() # Does the same thing
Qux.p.do_something() # Does the same thing
Foo.a.do_something() # Does something slightly different
稍微不同的行为将取决于 Foo class 实例,因此我无法在 Bar class 中为其创建新方法。
注意 Bar 的大部分行为都是相同的。我只想在 Foo.a.do_something()
中多做一步
不是以干净的方式。总的来说,这似乎是个坏主意。您如何知道 do_something
何时表现如何?这将是调试的噩梦。
如果 do_something
需要做一些不同的事情,继承 Bar
并在每个子类中以不同的方式实现它。
class Bar:
def do_something():
# Does something
class Bar2(Bar):
def do_something():
# Does something else
我正在计划一个 Python 项目。我将让 classes 使用其他 classes 的实例。是否可以从另一个 class 中 override/extend 一个方法,像这样:
class Foo:
a = Bar()
b = Bar()
c = Bar()
class Baz:
x = Bar()
y = Bar()
z = Bar()
class Qux:
p = Bar()
q = Bar()
r = Bar()
class Bar:
def __init__(self):
pass
def do_something():
# Thing to do
Baz.x.do_something() # Does the same thing
Qux.p.do_something() # Does the same thing
Foo.a.do_something() # Does something slightly different
稍微不同的行为将取决于 Foo class 实例,因此我无法在 Bar class 中为其创建新方法。 注意 Bar 的大部分行为都是相同的。我只想在 Foo.a.do_something()
中多做一步不是以干净的方式。总的来说,这似乎是个坏主意。您如何知道 do_something
何时表现如何?这将是调试的噩梦。
如果 do_something
需要做一些不同的事情,继承 Bar
并在每个子类中以不同的方式实现它。
class Bar:
def do_something():
# Does something
class Bar2(Bar):
def do_something():
# Does something else