就像在ruby中一样,我们有可以包含在任何给定类中的模块,然后我们可以使用那里定义的方法,这使我们免于被认为是耦合的继承。在python中有没有办法复制相同的功能?例如,我有两个班级
class A:
pass
class B:
pass
我希望上述两个类都具有日志记录功能,如:
def log(message):
print message
答案 0 :(得分:1)
在Python中,我们通常会继续使用继承。它本质上是一种混合模式。
你可以使用模块,但是,如果你真的想:
class Foo(object):
def __init__(self):
pass
from methods import baz, bar, quux
此处methods.py
将是一个包含名为baz
,bar
和quux
的函数(或其他属性)的模块,可能还有其他属性。如图所示,您可以直接在类上定义方法。
使用通配符导入会在Python 2.7中发出警告,我相信它在Python 3.x中完全不允许:
class Foo(object):
from methods import *
所以,像往常一样在Python中,"显式优于隐式。"也就是说,在你的课堂上准确指定你想要的方法而不是说#34;给我所有这些方法。"它使您的代码更清晰。