我的问题是如何“动态”创建变量。我试图生成一个具有随机属性集的对象。
from random import randint, choice
class Person(object):
def __init__(self):
self.attributes = []
possible_attributes= ['small', 'black', 'scary', 'smelly', 'happy'] # idk, random
chance = randint(1,5)
chosen_attributes = []
for i in xrange(chance):
#psuedo code...
local_var = choice(possible_attributes)
if local_var not in chosen_attributes:
VAR = local_var # VAR needs to be dynamic and 'global' for use later on
chosen_attributes.append(local_var)
Person.attributes.append(local_var)
我很肯定我想怎么做不是一个好办法,所以如果有人明白我在寻找什么,并能提供一个更好的方法(一个工作,首先)我会非常感激。谢谢!
要向类的实例添加属性,可以使用
.__dict__
:输出:
使用
vars
。例如:如您所知,方法只是多了一个参数的函数。
好吧,我不知道你想在这里实现什么,但这里可能有一些事情。。。。
这定义了一个类对象,您可以从中创建包含
attributes
的对象,我们可以从__init__
或构造函数(在某些其他语言中调用)中看到。但是你有
这里的
Person
是一个类对象,它实际上没有define since的属性,而define since的属性只用于从这个类创建的对象。。。您可以创建一个新的人员并为其添加适当的属性。
其次,我们真的不应该直接访问属性,因为任何东西都可以附加到列表中,包括重复的属性。
所以为什么不简单地添加一个添加属性的函数呢。
如果性能是一个问题,我们可以使用
set()
而不是[]
,因为它不允许重复条目和快速检查任何查找,缺点是值必须是可哈希的ie字符串、int或其他简单数据类型。。。相关问题 更多 >
编程相关推荐