我知道关于这个主题已经写了很多。但是,我无法吸收其中的大部分内容。也许是因为我是一个完全的新手,在没有任何计算机科学培训的情况下自学。无论如何,也许如果你们中的一些有头脑的人在这个特定的例子中加入进来,你会帮助像我这样的其他初学者。
因此,我编写了以下函数,当我调用它(作为一个模块?)时它工作得很好,因为它是一个名为“funky.py”的文件:
我在终端中输入以下内容:
python classy.py
它运行良好。
def load_deck():
suite = ('Spades', 'Hearts')
rank = ('2', '3')
full_deck = {}
i = 0
for s in suite:
for r in rank:
full_deck[i] = "%s of %s" % (r, s)
i += 1
return full_deck
print load_deck()
但是,当我将相同的函数放在一个类中时,我得到了一个错误。
这是我的“classy.py”代码:
class GAME():
def load_deck():
suite = ('Spades', 'Hearts')
rank = ('2', '3')
full_deck = {}
i = 0
for s in suite:
for r in rank:
full_deck[i] = "%s of %s" % (r, s)
i += 1
return full_deck
MyGame = GAME()
print MyGame.load_deck()
我收到以下错误:
Traceback (most recent call last):
File "classy.py", line 15, in <module>
print MyGame.load_deck()
TypeError: load_deck() takes no arguments (1 given)
因此,我将定义行更改为以下内容,它工作正常:
def load_deck(self):
将函数放在需要使用“自我”的类中是什么意思。我知道“自我”只是一个约定。那么,为什么需要任何论证呢?当从类中调用函数时,它们的行为是否不同?
另外,这几乎更重要,为什么我的课程没有使用init的好处?使用init会为我的班级做什么?
基本上,如果有人有时间像我 6 岁一样向我解释这一点,那会有所帮助。提前感谢您的帮助。