首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python类中创建go变量的问题

在python类中创建go变量的问题
EN

Stack Overflow用户
提问于 2013-11-27 00:58:10
回答 1查看 44关注 0票数 0

我有一个代码,它创建一个名为“frame”的类。当您调用它时,定义一组任意坐标,它将创建必要的自.x 'n‘和self.x.y’n‘变量,其中’n‘是输入的坐标数。以下是目前为止的代码:

代码语言:javascript
复制
    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的回答是“是”,那么有什么更好的方式来完成我想要完成的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-27 01:01:08

代码语言:javascript
复制
    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

动态地在庄园中创建变量是不允许的。将这些“变量”存储在一个小块中会好得多。

而不是做

代码语言:javascript
复制
something.x1

你能做到的

代码语言:javascript
复制
something.coords["x1"]

正如所指出的,另一种选择是使用

代码语言:javascript
复制
for count,pos in enumerate(coords,1):
    setattr(self, "x%s" % count, pos)

但对我来说,这只是感觉有点脏,这就使得一开始就很难得到"x“变量的总数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20231023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档