【发布时间】:2019-06-12 14:42:47
【问题描述】:
试图弄清楚如何使用函数在类中生成新的自命名变量。
我在 IDLE 中玩过它,并搜索了在线文档。解决方案在暗示我。
>>> import random
>>> abc = [(map(chr,range(ord('A'),ord('Z')+1)))+(map(chr,range(ord('a'),ord('z')+1)))]
>>> class Test():
def __init__(self, abc):
self.a = 0
self.abc = abc
def newSelf(self):
for i in range(2):
b = random.choice(abc)
c = random.choice(abc)
globals()['self.'+b+c] = 0
#or
locals()['self.'+b+c] = 0
print(b+c,0)
>>> example = Test(abc)
>>> example.a
0
>>> example.newSelf() #say it generates
An 0
ze 0
>>> example.An #calling new self variable of example object returns
Traceback (most recent call last):
File "<pyshell#221>", line 1, in <module>
example.An
AttributeError: 'Test' object has no attribute 'An'
# I'm hoping for...
>>> example.An
0
【问题讨论】:
-
为什么不使用字典来存储
An和ze(以及任何其他任意生成的字符对)? -
在调用类方法时尝试动态生成新的自我身份,我认为这将有助于使用 pygame 进行图像处理。最终,我试图分解我的批量精灵图像。随着被分解成更小的图像,一些图像在 20-30 范围内,而另一些则为 100+ 每个大图像。我想尝试动态生成名称以使其更具适应性,同时将新名称添加到列表中,以便在对象的调用系统中写入引用。
标签: python-3.x class attributes local-variables globals