作为字符串的用户输入不能用于调用类中的变量

时间:2017-11-14 23:05:31

标签: python class variables input methods

不确定我是否正确地提出了问题,但我会解释。我已经创建了一个类,并且我已经在该类中创建了实例,问题是我希望能够使用用户通过输入选择的实例。假设我想创建一个国际象棋游戏。我希望能够向前(可能向后),向左和向右移动一块。假设我已经在类中创建了一个方法来移动片段,每个片段都有一个名字,x-coord和y-coord。这是我得到的问题

const Promise = require('bluebird')

router.post("/users/:user/photos/upload", middle.isLoggedIn, upload.array("photos", 4), async function(req, res, next) {
    try {
        let foundUser = await User.findById(req.params.user)
        if (!foundUser) throw new Error(`No user found: $user`)
        let results = await Promise.map(req.files, async file => {
            let newImage = await Image.create(file)
            newImage.human = foundUser
            await newImage.save()
            console.log(newImage)
            let user_update = await User.addPhoto(req.params.user, newImage)
            console.log(user_update)
        }
    }
    catch (err) {
        next(err)
    }
})

现在我收到一个错误,因为分配给变量的输入是一个字符串,当我需要rook.move时,我实际上得到'rook'.move 我理解变量可以使用int(var),float(var),str(var)来改变,但是如何将变量更改为类变量。

1 个答案:

答案 0 :(得分:1)

一种方法是使用字典将片段名称映射到您的类。

所以

pieces = {
    'Queen': Piece(0,0),
    'Tower': Piece(0,0),
    'Rook' Piece(0,0)
}

inp = input('Which piece would you like to move?')

if inp in pieces:
    pieces[inp]().move(4, right)
else:
    print('No such piece: %s - Valid pieces: %s' % (inp, pieces.keys()))