首页 > 解决方案 > Python类和函数分开?

问题描述

为什么我的 IDE 将类和函数相互分离,如果我更改并运行,我会收到如下错误:TypeError: check_turn() missing 1 required positional argument: 'turn'

这就是我的代码最初的样子

class Dev:
    players = ['Bob', 'Anne']
    turn = [0, 1]

    def check_turn(self, players, turn):
        for i in turn:
            if i == 0:
                print("It's {} turn".format(players[0]))
            elif i == 1:
                print("It's {} turn".format(players[1]))
            return i

    check_turn(players, turn)

这是在我需要改变它之后

def check_turn(players, turn):
    for i in turn:
        if i == 0:
            print("It's {} turn".format(players[0]))
        elif i == 1:
            print("It's {} turn".format(players[1]))
        return i


class Dev:
    players = ['Bob', 'Anne']
    turn = [0, 1]

    check_turn(players, turn)

标签: python

解决方案


在你的情况下,我相信使用一个类没有任何意义,使用一个简单的方法就可以了。

类提供了一种将数据和功能捆绑在一起的方法。创建一个新类会创建一种新类型的对象,允许创建该类型的新实例。每个类实例都可以附加属性以维护其状态。类实例也可以具有用于修改其状态的方法(由其类定义)。

players = ['Bob', 'Anne']
turn = [0, 1]

def check_turn(players, turn):
    for i in turn:
        if i == 0:
          print("It's {} turn".format(players[0]))
        elif i == 1:
          print("It's {} turn".format(players[1]))
        return i

check_turn(players, turn)

输出 :

It's Bob turn

但是如果你想在创建类的实例时运行 check_turn() 方法,你必须通过以下方式更正它:

class Dev:
    players = ['Bob', 'Anne']
    turn = [0, 1]
    def check_turn(self, players, turn):
      for i in turn:
          if i == 0:
            print("It's {} turn".format(players[0]))
          elif i == 1:
            print("It's {} turn".format(players[1]))
          return i
    def __init__(self):
        self.check_turn(self.players, self.turn)

Dev()

输出 :

It's Bob turn

推荐阅读