类变量由于某种原因不起作用?蟒蛇

时间:2014-10-01 23:43:12

标签: python class

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:局部变量' nextseqNum'以前引用过   分配

我不明白为什么。那就是你如何使共享类变得正确?

1 个答案:

答案 0 :(得分:3)

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

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