TypeError:必须使用Page实例作为第一个参数调用未绑定方法setSize()(改为使用classobj实例)

时间:2017-11-26 21:48:37

标签: python class init

当我运行下面提供的代码时,出现以下错误:

TypeError:必须使用Page实例作为第一个参数调用unbound方法setSize()(改为使用int实例)

  

在我的主要内容中,我调用了一个名为Page的类。变量pageSize是一个整数。

from Page import Page as Page
def main():
   #other code....

   Page.setSize(pageSize)
  

这是我的Page:

class Page:
    def __init__(self, frame):
    self.frameId = frame
    self.pageId = -1
    self.timeEvicted = 0
    self.timeLoaded = 0
    self.ifLoaded = False
    self.ownerProcess = 0
    self.referencedWords = []

def initalize(owner, pgId, refdWord, ifLoad):
    self.ownerProcess = owner
    self.pageId = pgId
    addRefdWord(refdWord)
    self.ifLoaded = ifLoad

def setSize(s):
    self.size = s

1 个答案:

答案 0 :(得分:1)

每个实例方法(有权访问self的方法)必须self为第一个参数:

def initalize(self, owner, pgId, refdWord, ifLoad):
              ^^^^^

...

def setSize(self, s):
            ^^^^^
    self.size = s

否则,self未在函数体中定义。同样,Page.setSize(pageSize)将无效,因为您没有类的实例。您需要在调用实例方法之前创建一个:

page = Page()
page.setSize(pageSize)

现在,page.size == pageSize