【问题标题】:Error in classes - missing 1 required positional argument [closed]类中的错误-缺少1个必需的位置参数[关闭]
【发布时间】:2020-09-17 05:58:06
【问题描述】:

我实际上正在学习python3,但无法弄清楚为什么会这样

class Load():
    def __init__(self):
        print("Starting Now")
        self.player = []
    def player_Stats(self,filename):
        with open(filename) as my_names:
            names = my_names.readlines()
            for one in names:
                one.replace("\n","")
                self.player.append(one.split[":"][0])
                print(player)


print(Load.player_Stats("players.txt"))

它给了我一个错误

Traceback (most recent call last):
  File "test.py", line 56, in <module>
    print(Load.player_Stats("players.txt"))
TypeError: player_Stats() missing 1 required positional argument: 'filename'

我不明白为什么。

【问题讨论】:

标签: python python-3.x python-class


【解决方案1】:

您必须定义一个对象或将函数设为静态。
选项 1:定义对象:

class Load():
    def __init__(self):
        print("Starting Now")
        self.player = []
    def player_Stats(self,filename):
        with open(filename) as my_names:
            names = my_names.readlines()
            for one in names:
                one.replace("\n","")
                self.player.append(one.split[":"][0])
                print(player)

load = Load()
print(load.player_Stats("players.txt"))

选项 2:静态方法:

class Load():
    def __init__(self):
        print("Starting Now")
        self.player = []
    @staticmethod
    def player_Stats(filename):
        with open(filename) as my_names:
            names = my_names.readlines()
            for one in names:
                one.replace("\n","")
                self.player.append(one.split[":"][0])
                print(player)


print(Load.player_Stats("players.txt"))

【讨论】:

    【解决方案2】:

    试试这个:

    lass Load():
        def __init__(self):
            print("Starting Now")
            self.player = []
        def player_Stats(self,filename):
            with open(filename) as my_names:
                names = my_names.readlines()
                for one in names:
                    one.replace("\n","")
                    self.player.append(one.split[":"][0])
                    print(player)
    
    load = Load()
    
    print(load.player_Stats("players.txt"))
    

    问题是当你有一个类时,你必须创建它的一个实例。然后你就可以调用它的方法了。

    【讨论】:

      【解决方案3】:

      您需要创建Load 的新实例才能使用player_Stats 方法:

      load = Load()
      print(load.player_Stats("players.txt"))
      

      此外,您的代码中还有一些其他错误:

      self.player.append(one.split[":"][0])
      # should be
      self.player.append(one.split(":")[0])
      
      print(player)
      # should be
      print(self.player)
      

      【讨论】:

        猜你喜欢
        • 2019-10-30
        • 2021-09-12
        • 2022-01-18
        • 2020-09-03
        • 2022-01-27
        • 2021-12-30
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多