DJANGO应用程序
我有用Django发送电子邮件的接口:
from my_app.utils import com
com.mail.email_category1(subject, template, ...)
...
com.mail.email_category2(subject, template, ...)
我还有另一个互动的ie。短信:
com.sms.sms_category1(template, ...)
在my_app.utils.com
中定义了以下函数:
# my_app.utils.com
mail = CommunicationMail()
sms = CommunicationSms()
...
类别是上述类的方法。你知道吗
问题
是否可以每次调用CommunicationMail
时都调用com.mail.email_category...
的新实例?问题是每次调用都是同一个对象实例,所以当作为任务并行运行时,它们共享属性并重叠。你知道吗
Python模块是单例的,所以它只导入一次,所以
mail = CommunicationMail()
只执行一次。你知道吗您可以:
这将是建议的结构:
其中
my_app.utils.com
是:如果你真的想保留} documentation ):
com.mail.email_category1
符号,Python当然会让你成为动态语言 (^{但是使用第一种方法!你会问“为什么”。你知道吗
首先,它清楚地表明了您在做什么:您正在实例化一个新实例并调用一个方法。这对于
__getattr__
黑客来说并不清楚。你知道吗第二,您可以将新实例化的实例分配给变量
mail1
,然后调用mail1.email_category1(subject, template, ...)
或其他什么。对于__getattr__
hackery,您没有这种正常的、预期的灵活性。你知道吗相关问题 更多 >
编程相关推荐