擅长:python、mysql、java
<p>那要看情况了。如果文件或模块中的所有类都有一个不需要改变的通用类,那么我倾向于直接使用它,而不通过构造函数传递它,或者,如果我想在继承类中修改它,我在类级别定义一个变量。你知道吗</p>
<p>在您的例子中,如果downloader类(以及从它继承的所有类)总是要使用同一个记录器,那么我认为以您现在的方式使用它没有问题。你知道吗</p>
<pre><code># Case 1
# In case you want to allow logger being different for inherited classes.
class BaseDownloader(object):
logger = Logger1
class Downloader1(BaseDownloader):
logger = Logger2
# Case 2
# In case you want different logger for every instance
class Downloader(object):
def __init__(self, logger):
self.logger = logger
# Case 3
# If you don't need that kind of customizability, then using it directly
# is perfectly fine. In fact, that's how I'd start with, and change it
# later if the need arises.
class Downloader(object):
def download():
logger.alert('I am downloading')
</code></pre>