如何在python中分享b / w类的行为?

时间:2014-05-23 19:55:27

标签: python design-patterns

就像在ruby中一样,我们有可以包含在任何给定类中的模块,然后我们可以使用那里定义的方法,这使我们免于被认为是耦合的继承。在python中有没有办法复制相同的功能?例如,我有两个班级

class A:
    pass

class B:
    pass            

我希望上述两个类都具有日志记录功能,如:

def log(message):
    print message

1 个答案:

答案 0 :(得分:1)

在Python中,我们通常会继续使用继承。它本质上是一种混合模式。

可以使用模块,但是,如果你真的想:

class Foo(object):
    def __init__(self):
        pass

    from methods import baz, bar, quux

此处methods.py将是一个包含名为bazbarquux的函数(或其他属性)的模块,可能还有其他属性。如图所示,您可以直接在类上定义方法。

使用通配符导入会在Python 2.7中发出警告,我相信它在Python 3.x中完全不允许:

class Foo(object):
    from methods import *

所以,像往常一样在Python中,"显式优于隐式。"也就是说,在你的课堂上准确指定你想要的方法而不是说#34;给我所有这些方法。"它使您的代码更清晰。