2014-10-01 9 views
0
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 

出於某種原因,它是扔我類變量不工作的原因? Python的

UnboundLocalError: local variable 'nextseqNum' referenced before assignment

我不明白爲什麼。那你是如何讓共享類變得容易的?

回答

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 
+0

工作感謝你! – 2014-10-01 23:51:23