DJANGO APP
我有在Django中发送电子邮件的界面:
# Delete PrivateHeaders folder
rm -rf ${TARGET_BUILD_DIR}/${PRODUCT_NAME}${WRAPPER_SUFFIX}/PrivateHeaders
# Remove module.modulemap file
rm ${TARGET_BUILD_DIR}/${PRODUCT_NAME}${WRAPPER_SUFFIX}/Modules/module.modulemap
# Copy public.modulemap file and rename it to module.modulemap
cp ${SRCROOT}/test/public.modulemap ${TARGET_BUILD_DIR}/${PRODUCT_NAME}${WRAPPER_SUFFIX}/Modules/module.modulemap
# Append the Swift module so you can access you Swift code in Objective-C via @import MyFramework.Swift
echo "module ${PRODUCT_NAME}.Swift { header \"${PRODUCT_NAME}-Swift.h\" }" >> ${TARGET_BUILD_DIR}/${PRODUCT_NAME}${WRAPPER_SUFFIX}/Modules/module.modulemap
我还有另一个ie的interfces。对于短信:
from my_app.utils import com
com.mail.email_category1(subject, template, ...)
...
com.mail.email_category2(subject, template, ...)
在com.sms.sms_category1(template, ...)
中定义了函数:
my_app.utils.com
和类别是上述类的方法。
问题
每次拨打# my_app.utils.com
mail = CommunicationMail()
sms = CommunicationSms()
...
时,是否可以调用CommunicationMail
的新实例?问题是每次调用它都是相同的对象实例,所以即。当作为任务并行运行时,它们共享属性和重叠。
答案 0 :(得分:1)
这是推荐的结构:
from my_app.utils import com
com.Mail().email_category1(template, ...)
其中my_app.utils.com
是:
Mail = CommunicationMail
如果确实希望保留com.mail.email_category1
符号,Python当然会让你成为它的动态语言
(__getattr__
documentation):
# my_app.utils.com
class CommunicationMailFactory:
def __getattr__(self, name):
instance = CommunicationMail()
return getattr(instance, name)
mail = CommunicationMailFactory()
但是请使用第一种方法!“为什么,”你问。
首先,它清楚地说明了你在做什么:你正在实例化一个新实例并调用一个方法。对于__getattr__
hackery,这一点并不清楚。
其次,您可以将新近实例化的实例分配给变量mail1
,然后调用mail1.email_category1(subject, template, ...)
或其他任何内容。 __getattr__
hackery没有这种正常的,预期的灵活性。
答案 1 :(得分:0)
Python模块是单例,因此它只导入一次,因此mail = CommunicationMail()
执行一次。
from my_app.utils import com
com.CommunicationSms().sms_category1(template, ...)