我如何为一个类提供适当的参数?

时间:2013-06-18 03:10:12

标签: python class call

我有这个我正在玩的代码,但不知道如何调用它?

class Slide:
  def __init__(self, pictureFile, soundFile):
    self.picture - makePicture(pictureFile)
    self.sound = makeSound(soundFile)

  def show(self):
    show (self.picture)
    blockingPlay(self.sound)

我不能只做pictureFile =“xxxx.jpg”,soundFile =“xxxx.wav”然后去show(pictureFile,soundFile)?

2 个答案:

答案 0 :(得分:1)

首先,代码中有一个拼写错误。那 - 应该是=。

无论如何,调用它的方式是

Slide("xxxx.jpg","xxxx.wav").show()

答案 1 :(得分:1)

从技术上讲,你可以做到。问题归结为当你想要为类实例提供该信息时,在它创建时(在这种情况下你将它放在构造函数中:__init__)或者当你想要显示它时(在这种情况下,你将它们作为参数传递给show方法)。

在不知道幻灯片项目的细节的情况下,将它放在构造函数中似乎是最有意义的(在两个选项中)。

但那些不是你唯一的选择。你既不能做也不做:

class Slide:

    picture = None
    sound = None

    def __init__(self):
        # Nothing here
        pass

    def setPicture(self, pic):
        self.picture = pic

    def setSound(self, snd):
        self.sound = snd

    def show(self):
       show (self.picture)
       blockingPlay(self.sound)

# "Main"
s = Slide()
s.setPicture("foo.jpg")
s.setSound("bar.wav")
s.show()

这使您可以灵活地创建没有图片和声音的幻灯片(如果您想要没有任何音乐的空白幻灯片,该怎么办?)。

编辑:你编辑了你的问题,或者我最初误读了它。如果我误读了它,那么锑就是正确的,你可以用他提出的或类似的东西来调用那段代码:

s = Slide("foo.jpg", "bar.wav")
s.show()

但是如果这是你正在学习编程/ python的东西,我认为你应该考虑用这些参数提供类实例的最佳位置。至少在你的情况下,我不确定它是构造函数。