类变量因某种原因不起作用?Python

2024-10-06 10:22:48 发布

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

class Note:
     nextseqNum = 0
     def __init__(self):
        self.text        = str
        self.dateCreated = datetime
        self.dateRead    = datetime
        self.description = str
        self.category    = str
        self.priority    = int
        self.hidden      = bool
        self.seqNum      = nextseqNum
        nextseqNum       += 1

不知什么原因,它把我甩了

UnboundLocalError: local variable 'nextseqNum' referenced before assignment

我不明白为什么。你就是这样让共享类变的,对吧


Tags: textselfdatetimeinitdefdescriptionclassint
1条回答
网友
1楼 · 发布于 2024-10-06 10:22:48

需要在类上访问共享类变量,因为它不会成为类方法中的局部变量(这解释了错误消息):

self.seqNum = Note.nextseqNum
Note.nextseqNum += 1

有一些捷径:

self.seqNum = self.nextseqNum  # Not found on self, so looked up on class.
Note.nextseqNum += 1

因为如果在实例上找不到名称,python就会查看类。如果不想显式命名类:

self.seqNum = self.__class__.nextseqNum  # for new-style classes, type(self) == self.__class__
self.__class__.nextseqNum += 1

相关问题 更多 >