我每次打电话上课时都试图获得新的随机名称。 我将其定义为
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/