如何动态选择一个class实例化?
How to dynamically choose a class to instantiate?
我有三个 class 用于 Dog
、Bird
和 Cat
。每个都几乎一样。不合并为 Pet
中的一个 class - 是否可以从宠物列表中选择,然后将其命名为 class?我现在收到一个错误:
oPet = randoType(random.choice(names))
TypeError: 'str' object is not callable
我的代码:
class Dog():
"""Dog class"""
def __init__(self, name:str) -> None:
"""Initialize a dog"""
self.name = name
def speak(self):
"""Dog speaks"""
return "bark, bark, bark"
def getName(self):
"""Gets pet name"""
return self.name
### OTHER CLASSES ALMOST SAME, NOT SHOWN
names = [
"Spencer",
"Spike",
"Stuart",
"Tank",
"Tanner"]
petTypes = ['Dog', 'Cat', 'Bird']
number_pets = random.randint(1,len(names))
petSet = set()
for x in range(1, number_pets):
petSet.add(random.choice(names))
listPets = list(petSet)
oPets = []
for x in range (1,6):
randoType = random.choice(petTypes)
oPet = randoType(random.choice(names))
oPets.append(oPet)
randoType
是一个字符串,而不是 class。将 classes 本身而不是他们的名字放在 petTypes
.
中
petTypes = [Dog, Cat, Bird]
我有三个 class 用于 Dog
、Bird
和 Cat
。每个都几乎一样。不合并为 Pet
中的一个 class - 是否可以从宠物列表中选择,然后将其命名为 class?我现在收到一个错误:
oPet = randoType(random.choice(names))
TypeError: 'str' object is not callable
我的代码:
class Dog():
"""Dog class"""
def __init__(self, name:str) -> None:
"""Initialize a dog"""
self.name = name
def speak(self):
"""Dog speaks"""
return "bark, bark, bark"
def getName(self):
"""Gets pet name"""
return self.name
### OTHER CLASSES ALMOST SAME, NOT SHOWN
names = [
"Spencer",
"Spike",
"Stuart",
"Tank",
"Tanner"]
petTypes = ['Dog', 'Cat', 'Bird']
number_pets = random.randint(1,len(names))
petSet = set()
for x in range(1, number_pets):
petSet.add(random.choice(names))
listPets = list(petSet)
oPets = []
for x in range (1,6):
randoType = random.choice(petTypes)
oPet = randoType(random.choice(names))
oPets.append(oPet)
randoType
是一个字符串,而不是 class。将 classes 本身而不是他们的名字放在 petTypes
.
petTypes = [Dog, Cat, Bird]