Python:当在另一个类中使用某个实例的实例方法时,是否可以覆盖/扩展该实例方法?

时间:2020-07-27 10:28:54

标签: python class methods overriding instance

我正在计划一个Python项目。我将要使用其他类的实例的类。是否可以从另一个类中重写/扩展方法,例如:

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类实例,因此我无法在Bar类中为其创建新方法。 注意:Bar的大多数行为都是相同的。我只想在Foo.a.do_something()

中做一个额外的步骤

1 个答案:

答案 0 :(得分:1)

不是干净的。总体而言,这似乎是个坏主意。您怎么知道do_something的行为方式?这将是调试的噩梦。

如果do_something需要做一些不同的事情,请子类Bar并在每个子类中以不同的方式实现。

class Bar:    
    def do_something():
        # Does something

class Bar2(Bar):    
    def do_something():
        # Does something else