【问题标题】:TypeError: __init__() takes 1 positional argument but 4 were givenTypeError: __init__() 接受 1 个位置参数,但给出了 4 个
【发布时间】:2016-05-20 23:47:37
【问题描述】:
class voting():
    number = 0
    name   = ""
    surfer = ""

    def __init__(self, num, na, surf):
        self.number = num
        self.name   = na
        self.surfer = surf

    def save_surfer(self):
        file = open("Surfer_list.txt", "a")
        file.write("%07s%16s%16s\n" % (self.number, self.name, self.surfer))
        file.close()

class judge():

    def __init__(voting):
        voting.__init__(self, num, na, surf)

    def save(self):
        file = open("Surfer_list.txt", "a")
        file.write("%07s%16s%16s\n" % (self.number * 11, self.name,     self.surfer))
        file.close()


surf   = ["Jonny Johns", "Juan Martino", "Joseph Smith", "Stacey O'Neill"]
num  = [1, 2, 3, 4]
running = True

while running:
    option = 1

    for choice in surf:
        print(str(option) + ". " + choice)
        option = option + 1

    print(str(option) + ". Giveup")
    choice = int(input("Choose a surfer(1~4): "))

    if choice == option:
        running = False
    else:
        na = input("Your Name: ")

    if input("Are you a Judge?(Y/N) ") == "Y":
        judge(num[choice-1], na, surf[choice-1]).save()
    else:
        voting(num[choice-1]. na, surf[choice-1]).save()

我读了数百遍,我就是找不到问题所在... 我对此真的很陌生,请帮助我知道什么是错的 我看到了类似的问题,但这些问题与我的不同.. 非常感谢您的帮助

【问题讨论】:

  • 您想先告诉我们您的问题是什么?此外,当您发布代码时,您会确保它正确显示。在 Python 中,缩进非常重要。例如,它们是您的 while 循环中存在或不存在的区别!在how to ask a good question 上阅读更多信息。
  • 首先,缩进为假。但我认为,这只是格式问题。错误在def__init__(voting) 中。看到它Classes and Inheritance

标签: python


【解决方案1】:

如果我做得好,你希望班级法官继承班级投票。要指定这一点,你应该这样做:

class voting():
    number = 0
    name   = ""
    surfer = ""
    def __init__(self, num, na, surf):
        self.number = num
        self.name   = na
        self.surfer = surf
    def save_surfer(self):
        file = open("Surfer_list.txt", "a")
        file.write("%07s%16s%16s\n" % (self.number, self.name, self.surfer))
        file.close()

class judge(voting):
    def __init__(self, num, na, surf):
        voting.__init__(self, num, na, surf)
    def save(self):
        file = open("Surfer_list.txt", "a")
        file.write("%07s%16s%16s\n" % (self.number * 11, self.name,     self.surfer))
        file.close()

Doc关于python中的继承

【讨论】:

  • 这种情况下可以省略judge中的__init__方法。
猜你喜欢
  • 2019-12-07
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2017-04-22
  • 2018-06-21
  • 2014-11-12
  • 2019-10-27
相关资源
最近更新 更多