两个部分:为什么这段代码不能调用我想要的函数,我可以在不为其创建单独函数的情况下执行此操作吗?

时间:2013-09-30 10:38:24

标签: python oop python-2.7

这是较大程序的一部分,应该发生的是Score.print_points()行调用类Score中的print_points()函数,然后打印self.points变量。

class Score(object):

    def __init__(self, points):
        self.points = points

    def set_score(self):
        self.points = 100

    # This is going to be used for something else   
    def change_score(self, amount):
        self.points += amount

    def print_points(self):
        print self.points

Score.print_points()

但是,当我运行它时,我收到此错误:

Traceback (most recent call last):
  File "sandbox.py", line 15, in <module>
    Score.print_points()
TypeError: unbound method print_points() must be called with Score instance as first argument (got nothing instead)

我真的不熟悉术语,但我以为我是用分数实例作为我的第一个参数?

关于第二部分:有没有一种方法可以在Score类中创建单独的函数来打印self.points?

1 个答案:

答案 0 :(得分:3)

问题是你在类本身上调用print_points,而不是该类的实例。

尝试

>>> score = Score(0)
>>> score.print_points()
0

关于你的第二个问题:

  

关于第二部分:有没有一种方法可以在Score类中创建单独的函数来打印self.points?

你可以做到

>>> print score.points