为什么这会返回两个值?简单的python初学者

时间:2015-04-09 23:17:29

标签: python function class methods

有人可以解释为什么我在下面的类中输入的方法返回两个值吗?我正在学习python,并且正在创建一个简单的游戏来掌握OOP和类。无论如何,我需要输入方法从片段列表中返回一个随机片段。但我不断得到两个片段而不是一个。有人可以解释原因吗?

    from sys import exit
    from random import randint




  class Island(object):

    def enter(self):
     pass



  class Loser(Island):
    snippets = ["Welcome to loser Island",
            "Can't win them all", 
            "There's always next time"]             
   def enter(self): 
      print Loser.snippets[randint(0,len(self.snippets)-1)]



  loser_test = Loser()
  loser_test.enter()

3 个答案:

答案 0 :(得分:3)

为什么不使用random.choice

def enter(self): 
    print random.choice(self.snippets)

答案 1 :(得分:1)

通常,您将创建一个类,然后描述该类实例的行为和内容。类的实例是类型为该类的对象。例如,john = Person('John', 'Doe')会创建一个Person对象,将'John''Doe'发送到对象的__init__方法(构造函数)。

以下通过使用单词self来强调课程实例。 self不是关键字(例如in);它只是一个对象描述用来引用对象本身的词。您可以使用任何字词(例如xyz中的for xyz in [1,2,3]),但首选self

>>> import random
>>> class L(object):
...     def __init__(self):
...             self.snippets = ["Welcome", "Can't", "There's"]
...     def enter(self):
...             print (random.choice(self.snippets))
...
>>> l = L()
>>> l.enter()
There's
>>> l.enter()
There's
>>> l.enter()
Welcome
>>> l.enter()
Can't
>>>

答案 2 :(得分:0)

我会猜测并说出来,因为你有类似的东西

class Island:
    def __init__(self):
        print self.enter()

但它真的是在黑暗中刺伤......因为你没有提供足够的信息来实际回答你的问题。 ...(我猜这个问题应该关闭,直到OP提供足够的数据)

你可以通过运行

进行测试
loser_test = Loser()

如果您看到的印刷品几乎肯定是您的问题