【问题标题】:How do I provide proper arguments for a class?如何为课程提供适当的论据?
【发布时间】:2023-03-19 16:02:01
【问题描述】:

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

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) 吗?

【问题讨论】:

    标签: python class call


    【解决方案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()
    

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

    编辑:要么您编辑了您的问题,要么我最初完全误读了它。如果我看错了,那么 Antimony 是正确的,你可以用他提出的或类似的东西来调用该代码:

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

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

    【讨论】:

      【解决方案2】:

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

      反正叫法是

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

      【讨论】:

        猜你喜欢
        • 2014-11-07
        • 1970-01-01
        • 2021-02-16
        • 1970-01-01
        • 2017-11-22
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多