python get new random name for every call of class
每次上课的时候,我都想得到新的随机名字。我把它定义为
1 2 3 4 5 6 | 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循环调用
1 2 3 | for i in range(5): person = Test() print person.name |
为什么每次
在本代码中:
1 2 3 | class Test(object): def __init__(self, name=namemethod()): self.name = name |
默认参数
1 | name=namemethod() |
只为整个类计算一次(默认参数始终只计算一次)
您可能希望改为使用
1 2 3 4 5 6 | class Test(object): def __init__(self, name=None): if name is None: name = namemethod() self.name = name |
在您的代码中,
您的期望行为可以通过以下方式实现:
1 2 3 4 5 6 | def namemethod(): return ''.join(random.choice(string.lowercase) for x in range(5)) class Test(object): def __init__(self, name=None): self.name = name if name is not None else namemethod() |