Python编程中的类管理

2024-05-06 00:11:09 发布

您现在位置:Python中文网/ 问答频道 /正文

更新

Tells me that TypeError: __init__() missing 1 required positional argument: 'storlek'

我的班级

class Hanterare:
    def __init__(self, storlek):
        self.storlek =storlek

我的职能

def fråga_storlek():
    try:
        Hanterare().storlek =int(input('Choose size'))
    except ValueError:
        print("Wrong try again!!")
        fråga_storlek()

我想使用这个值,用户选择并调用它们到我的其他函数中,例如:

def getNewBoard():
    board = []
    for i in range(fråga_storlek()):
        board.append([' '] * fråga_storlek())

Tags: selfboardthatinitdefrequiredfrme
2条回答

不,要在类中创建字段,应该在名为__init__(self)的函数中声明它。像这样:

class BoardHandler:
    def __init__(self, Q):
        self.Q = Q

也可以在创建时获取输入,而不是将其作为参数,如下所示:

class BoardHandler:
    def __init__(self):
        self.Q = int(input("What size would you prefer?"))

您不想使用:

class BoardHandler:
    self.Q = 5 #some number

除非希望所有allBoardHandler的电路板大小相同

然后您可以通过使用self.Q在类的其他方法中访问它。 要在课外使用它,以下是方法:

b_size = int(input("What size?"))
bh = BoardHandler(b_size)

print("The board size is: " + str(bh.Q))
  1. 除非我遗漏了一个符号,Q是个可怕的名字。变量名和方法名应为小写,并描述变量的用途。board_width会是一个更好的名字。

  2. 拥有一个与类成员同名的方法是令人困惑的。因为您要求的是板的大小,所以我将该方法重命名为ask_board_size

  3. 考虑到上述因素后,问题自行解决:


class BoardHandler(self, board_size):
self.board_size = board_size

   def ask_board_size(self):
    try:
        self.board_size = int(input("Choose size please"))
    except ValueError:
        print("Wrong try again!")
        ask_board_size()

那个构造器是新的符号吗?它可能应该使用__init__

class BoardHandler:
    def __init__(self, board_size):
        self.board_size = board_size
    ... 

相关问题 更多 >