在Python编程中管理类

时间:2017-07-28 14:45:32

标签: python python-3.x

更新

  

告诉我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())

2 个答案:

答案 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)

  1. 除非我错过了一个符号,Q是一个可怕的名字。变量和方法名称应为小写,并描述变量的用途。 board_width会是一个更好的名字。

  2. 拥有一个与类成员同名的方法令人困惑。由于您要求的是电路板尺寸,我会将方法重命名为ask_board_size

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

  4. 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
        ...