【问题标题】:python dictionary from a different method causing "missing positional argument" error [closed]来自不同方法的python字典导致“缺少位置参数”错误[关闭]
【发布时间】:2020-10-10 14:03:47
【问题描述】:

我正在用 python 制作一个 cli“高峰时间”游戏。游戏板来自用户的输入,汽车由字母表示。我通过将每个唯一字母添加到字典中来解析电路板以查找每辆车。我正在尝试使用汽车字典来创建汽车(代码中前面的汽车类的实例)并计算大小和方向。

使用我在板类中的代码,我收到以下错误:TypeError: create_all_cars_in_this_board() missing 1 required positional argument: 'my_cars_dict'

find_all_cars_in_this_board 方法似乎工作正常,但 create_all_cars_in_this_board 方法无法访问它。

def find_all_cars_in_this_board(self):
    my_cars_dict = {}
    for h in range(self.height):
        for w in range(self.width):
            if self.game_board[h][w].isalpha():
                if self.game_board[h][w] in my_cars_dict:
                    my_cars_dict[self.game_board[h][w]].append((h, w))
                else:
                    my_cars_dict[self.game_board[h][w]] = [(h, w)]
    return my_cars_dict

def create_all_cars_in_this_board(self, my_cars_dict):
    my_cars = []
    for letter in my_cars_dict.keys():
        c = Car(my_cars_dict[letter])
        my_cars.append(c)
        for c in my_cars:
            c.calc_size()
            c.calc_direction()
    return my_cars

【问题讨论】:

  • 我们需要看看你是怎么打电话给create_all_cars_in_this_board的。但是根据错误,您要么没有传递my_cars_dict,要么像调用静态方法一样调用该方法。
  • 你没有显示调用create_all_cars_in_this_board的代码

标签: python function dictionary methods


【解决方案1】:

请参阅下面的 2 个工作选项。

哪一款适合你?

我们无法判断,因为我们无法看到您代码的所有详细信息。

class CarSomething:
  def find_all_cars_in_this_board(self):
      my_cars_dict = {}
      for h in range(self.height):
          for w in range(self.width):
              if self.game_board[h][w].isalpha():
                  if self.game_board[h][w] in my_cars_dict:
                      my_cars_dict[self.game_board[h][w]].append((h, w))
                  else:
                      my_cars_dict[self.game_board[h][w]] = [(h, w)]
      return my_cars_dict

  def create_all_cars_in_this_board(self):
      my_cars_dict = self.find_all_cars_in_this_board()
      my_cars = []
      for letter in my_cars_dict.keys():
          c = Car(my_cars_dict[letter])
          my_cars.append(c)
          for c in my_cars:
              c.calc_size()
              c.calc_direction()
      return my_cars

car = CarSomething()
car.create_all_cars_in_this_board()

#---------------------- OR -------------------------

class CarSomething:
  def find_all_cars_in_this_board(self):
      my_cars_dict = {}
      for h in range(self.height):
          for w in range(self.width):
              if self.game_board[h][w].isalpha():
                  if self.game_board[h][w] in my_cars_dict:
                      my_cars_dict[self.game_board[h][w]].append((h, w))
                  else:
                      my_cars_dict[self.game_board[h][w]] = [(h, w)]
      return my_cars_dict

  def create_all_cars_in_this_board(self,my_cars_dict):
      my_cars = []
      for letter in my_cars_dict.keys():
          c = Car(my_cars_dict[letter])
          my_cars.append(c)
          for c in my_cars:
              c.calc_size()
              c.calc_direction()
      return my_cars

car = CarSomething()
my_cars_dict = car.find_all_cars_in_this_board()
car.create_all_cars_in_this_board(my_cars_dict)

【讨论】:

  • 第二个是对的
  • 太棒了。我希望问题得到解决。随意投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2015-02-24
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2018-09-06
相关资源
最近更新 更多