我想在班级内打印一个随机生成的数字,但不断出错

时间:2019-01-15 21:28:04

标签: python python-3.x class random

我遇到名称错误,尝试从类方法中打印随机数时未定义randint。

class Deck:
    import random
    def __init__(self,choice,card = 0):
        self.choice = choice
        self.card = card
    def deck(self): 
        if self.choice == 1:
            print((randint(1,5)))

我希望它打印一个1-5的随机数,我可以通过创建一个分配了随机数的类变量来获得结果,我仍然想知道为什么我不能只在方法内部生成随机数

3 个答案:

答案 0 :(得分:1)

这是因为您没有通过randint模块调用random

使用randint的正确方法是明确地通过random模块来完成。

import random

class Deck:
    def __init__(self,choice,card = 0):
        self.choice = choice
        self.card = card
    def deck(self): 
        if self.choice == 1:
            print((random.randint(1,5)))

或者通过将randint引入模块命名空间中,如

from random import randint

class Deck:
    def __init__(self,choice,card = 0):
        self.choice = choice
        self.card = card
    def deck(self): 
        if self.choice == 1:
            print((randint(1,5)))

答案 1 :(得分:0)

在类中具有导入通常是一种不好的做法,但是使用类函数来完成它看起来像:

class Deck:
    random = __import__('random')
    def __init__(self,choice,card = 0):
        self.choice = choice
        self.card = card
    def deck(self): 
        if self.choice == 1:
            print((self.random.randint(1,5)))

x = Deck(choice = 1)
x.deck()

答案 2 :(得分:0)

您的import语句应该在类定义之外(最好在脚本顶部,但这不是必须的)

要使用randint函数,必须首先引用随机库来调用它:

import random

class Deck:
    def __init__(self,choice,card = 0):
        self.choice = choice
        self.card = card
    def deck(self):
        if self.choice == 1:
            print((random.randint(1,5)))