我已将NEW_MESSAGE_ON_PROJECT
和NEW_MESSAGE_ON_PROPOSAL
移至超级类BaseNotification
。
class CustomerNotification(BaseNotification):
NEW_PROPOSAL = 1000
# NEW_MESSAGE_ON_PROJECT = 1001
# NEW_MESSAGE_ON_PROPOSAL = 1002
CHOICES = ((NEW_PROPOSAL, "New Prpposal"),
(NEW_MESSAGE_ON_PROJECT, "New Message on Project"),
(NEW_MESSAGE_ON_PROPOSAL,"New Message on Proposal"))
当我设定选择权时,我得到了
NameError: name 'NEW_MESSAGE_ON_PROJECT' is not defined
我这里没有self
上下文。那么解决方案是什么?
答案 0 :(得分:2)
您必须明确使用基类的名称:
class CustomerNotification(BaseNotification):
NEW_PROPOSAL = 1000
# NEW_MESSAGE_ON_PROJECT = 1001
# NEW_MESSAGE_ON_PROPOSAL = 1002
CHOICES = ((NEW_PROPOSAL, "New Prpposal"),
(BaseNotification.NEW_MESSAGE_ON_PROJECT,
"New Message on Project"),
(BaseNotification.NEW_MESSAGE_ON_PROPOSAL,
"New Message on Proposal"))
这样做的原因是,在启动类定义时,您会获得一个干净的命名空间,类似于(但肯定不相同)启动函数时获得的命名空间。
此命名空间不包含基类中的任何内容。访问基类成员是在访问已完成的类(或其对象)的成员时处理的。
答案 1 :(得分:0)
您需要直接引用BaseNotification.NEW_PROPOSAL
。