如何访问超类属性h

2024-09-27 00:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经将NEW_MESSAGE_ON_PROJECTNEW_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

我不明白这里的上下文。那么解决办法是什么呢


Tags: projectmessagenewonclasschoicesproposalprpposal
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"))

这是因为在启动类定义时会得到一个干净的名称空间,与启动函数时得到的名称空间类似(但肯定不相等)

此命名空间不包含基类中的任何内容。访问基类成员是在访问已完成类的成员(或其对象)时处理的

您需要直接引用BaseNotification.NEW_PROPOSAL

相关问题 更多 >

    热门问题