把自我作为外在方法的属性是一种好的做法吗?

2024-04-26 19:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图避免在两个类中重复代码,我已经测试了下面的代码片段,并且它可以工作,我想知道这是一个好的做法还是应该考虑使用继承。在这种情况下,这种方法有什么特别错误的地方吗?你知道吗

def do_something_with_self(obj):
    print 'Hello, I was called from %s' % obj.name

class A(object):
    name = "Class A"

    def do_something(self):
        do_something_with_self(self)    

class B(object):
    name = "Class B"

    def do_something(self):
        do_something_with_self(self)

if __name__ == '__main__':
    a = A()
    b = B()
    a.do_something()
    b.do_something() 

Tags: 方法代码nameselfobjobjectdef地方
2条回答

如果情况需要,这是一个好的做法。有时,一个对象需要传递给一个函数,这个函数可以处理该类型的对象,而不是该类型对象的方法,这就是方法。例如,您的对象可能有一个包含对象的dir()的日志函数dir(self)就是这样做的。你知道吗

但是,如果AB实际上都是同一类的对象(比如Letter),我建议使用继承。你知道吗

这是个好习惯。一般来说,在继承和另一种简单的代码共享机制之间进行选择时,应该避免继承。你知道吗

相关问题 更多 >