有人可以解释为什么我在下面的类中输入的方法返回两个值吗?我正在学习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()
答案 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()
如果您看到的印刷品几乎肯定是您的问题