假设我有一个名为 Person
的类,其中只有人的姓名和性别。
性别应从男性和女性中随机选择。为此,我导入了 random.randint()
函数。根据随机int确定随机性别。
import random
class Person:
alias = random.randint(1, 3)
if alias == 2:
gender = 'Male'
else:
gender = 'Female'
def __init__(self, name):
self.name = name
r = Person('rachel')
s = Person('Stanky')
print(r.gender)
print(s.gender)
但是,我从这个类(class)的不同人得到的结果都具有相同的性别。我的理解是 randint
一旦生成就固定了。我的问题是如何使每个类实例都不同。
最佳答案
你永远不会得到不同性别的原因是因为性别属性是一个类变量。一旦 Python 创建了你的类对象 Person
,gender
的值就不会再计算了。您需要将 gender
变量设为 instance 属性。这意味着性别将在每个实例的基础上计算,而不是每个类定义。例如:
import random
class Person:
def __init__(self, name):
self.name = name
alias= random.randint(1, 3)
if alias == 2:
self.gender = 'Male'
else:
self.gender = 'Female'
r= Person('rachel')
s= Person('Stanky')
print(r.gender)
print(s.gender)
哪些输出
Female
Male
附带说明一下,我认为您的任务更好的选择是使用 random.choice()
从性别列表中选择一个随机性别(男性或女性):
from random import choice
class Person:
genders = ('Male', 'Female', 'Female')
def __init__(self, name):
self.name = name
self.gender = choice(Person.genders)
rachel = Person('Rachel')
stanky = Person('Stanky')
print(rachel.gender)
print(stanky.gender)
请注意,在我上面的示例中,Person.genders
是一个类变量。这是故意的。因为我们只需要创建一个性别列表一次,所以我们可以将该列表设为类级别变量。
关于python - 在定义一个python类时,如何在其中设置一个随机变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991548/