我有一个代码,它创建一个名为“frame”的类。当您调用它时,定义一组任意坐标,它将创建必要的自.x 'n‘和self.x.y’n‘变量,其中’n‘是输入的坐标数。以下是目前为止的代码:
class NoCoords(Exception): "raised if no coordinates are input"
class frame:
def __init__(self,*coords):
try:
for count,pos in enumerate(coords,1):
exec('self.x%s,self.y%s=%s'%(count,count,pos))
except(IndexError): raise NoCoords()我的问题是,如果我将frame1定义为具有2个坐标的框架类,然后将frame2定义为具有3个坐标的框架类,则不会为frame2创建单独的x和y坐标。它将简单地创建x1、y1和x2以及frame1所需的y2变量,当创建frame2时,它只会创建x1、y1和x2、y2变量,它不会创建第三组变量(x3、y3)来包含frame2中指定的第三个坐标。
因此,这就引出了一些问题: 1.有什么办法(如果有的话)来解决这个问题? 2.这是一种愚蠢的做法吗? 3.如果对2的回答是“是”,那么有什么更好的方式来完成我想要完成的事情?
发布于 2013-11-27 01:01:08
def __init__(self,*coords):
self.coords = {}
for count,pos in enumerate(coords,1):
self.coords["x%s" % count] = pos
self.coords["y%s" % count] = pos动态地在庄园中创建变量是不允许的。将这些“变量”存储在一个小块中会好得多。
而不是做
something.x1你能做到的
something.coords["x1"]正如所指出的,另一种选择是使用
for count,pos in enumerate(coords,1):
setattr(self, "x%s" % count, pos)但对我来说,这只是感觉有点脏,这就使得一开始就很难得到"x“变量的总数。
https://stackoverflow.com/questions/20231023
复制相似问题