我有以下代码:
from numpy import random
class Person():
def __init__(self, name, age=random.randint(18,65)):
self.name = name
self.age = age
我希望年龄是 18 到 65 之间的随机数,除非明确指定。但是,当我创建此类的不同实例时,如下所示:
p1 = Person('Bob')
p2 = Person('Sue')
p3 = Person('Jeff')
每个人的年龄总是相同的。我怎样才能解决这个问题?
该行为的原因是属性的默认值被初始化并仅设置一次,因此代码片段random.randint(18,65)
将被执行并设置为年龄的默认值,这就是如果未提供年龄则具有相同的年龄默认值的原因。
解决问题将默认值设置为 None 并根据需要执行检查和分配随机值:
from numpy import random
class Person():
def __init__(self, name, age=None):
if age is None:
age = random.randint(18,65)
self.name = name
self.age = age
有关默认属性的有用信息:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)