python为类的每次调用获取新的随机名称

标签 python python-2.7

我每次打电话上课时都试图获得新的随机名称。 我将其定义为

def namemethod():
    return ''.join(random.choice(string.lowercase) for x in range(5))

class Test(object):
    def __init__(self, name=namemethod()):
        self.name = name

我正在通过 for 循环调用 Test 类来获取新名称,但我一直在获取相同的名称,难道不是应该调用 init 方法并获取新的随机数吗名字?

for i in range(5):
    person = Test()
    print person.name

为什么 person = Test() 不是每次都调用 namemethod

最佳答案

在这段代码中:

class Test(object):
    def __init__(self, name=namemethod()):
        self.name = name

默认参数

name=namemethod()

整个类只被评估一次(默认参数总是只被评估一次)

您可能想要做的是使用 name=None 作为 name 参数的默认值。在 __init__() 中,您可以执行如下操作:

class Test(object):
    def __init__(self, name=None):
        if name is None:
            name = namemethod()

        self.name = name

关于python为类的每次调用获取新的随机名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48507182/

相关文章:

python - 需要帮助清理 PyQt 和 python

python - 用户使用 Bottle 框架下载后如何删除文件...?

Python文件解析: Build tree from text file

python - 为什么 aiohttp 比 run_in_executor 包装的请求慢?

python - 如何使用 sqlalchemy 向 MySQL 插入多个表

python - matlab中分位数的等效python命令

python - 将具有匹配索引的数组元素清零

python - 使用 frozen set 作为 Dict 键是否安全?

python - 从 ctypes windll 获取错误信息

python - 绘制 sum(matrix,axis=0) 并用求和所需的非零元素的行索引标记该图