告诉我
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())
答案 0 :(得分:0)
不,要在类中创建字段,您应该在名为__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
除非您希望所有 BoardHandler
的电路板尺寸相同。
然后,您只需使用self.Q
即可在其他类方法中访问它。
要在课外使用它,请按照以下方式进行:
b_size = int(input("What size?"))
bh = BoardHandler(b_size)
print("The board size is: " + str(bh.Q))
答案 1 :(得分:0)
除非我错过了一个符号,Q
是一个可怕的名字。变量和方法名称应为小写,并描述变量的用途。 board_width
会是一个更好的名字。
拥有一个与类成员同名的方法令人困惑。由于您要求的是电路板尺寸,我会将方法重命名为ask_board_size
。
考虑到上述因素后,问题就解决了:
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
...