小编Rob*_*ert的帖子

Python:将元组列表转换为对象列表?

如果我有一个如下所示的元组列表:

Data = [
        #   OP,  FLAG,   IDENT,  NAME
        ( Op.GA, Flag.GA, "GA", "Asset" ),
        ( Op.LP, Flag.LP, "LP", "Low" ),
        ( Op.HP, Flag.HP, "HP", "High" ),
        ( Op.CU, Flag.CU, "CU", "Custom" ),
]
Run Code Online (Sandbox Code Playgroud)

有没有一种聪明的方法可以将其转换为对象列表,这样就像我执行了以下操作:

Objects = [
        #       OP,    FLAG,    IDENT,  NAME
        OBJECT( Op.GA, Flag.GA, "GA", "Asset" ),
        OBJECT( Op.LP, Flag.LP, "LP", "Low" ),
        OBJECT( Op.HP, Flag.HP, "HP", "High" ),
        OBJECT( Op.CU, Flag.CU, "CU", "Custom" ),
]
Run Code Online (Sandbox Code Playgroud)

我希望有类似的事情 Objects = create( OBJECT, Data )

我想我设法弄清楚如何使用循环和元组解包一次转换一个元素(对我来说是新的)。因此,本质上,迭代元组列表并在将它们附加到第二个列表时一次构造一个对象。这是处理这个问题的最好方法吗?

原因:我试图允许外部代码将类似枚举的属性作为元组列表发送,然后使用它来生成类实例列表来表示类似枚举的数据。我需要类的唯一原因是允许外部代码使用命名成员引用数据,例如enum_ref.Ident(而不是enum_ref[2] …

python tuples list unpack pack

3
推荐指数
2
解决办法
5502
查看次数

自动生成基于会员的操作?

是否有任何内置的 C++ 机制能够自动生成代码来调用类的每个成员上的函数或运算符?

例如,如果我们有数百种类型需要使用一组特定的函数或运算符。在每一种类型中,每种类型都需要为其所有成员调用相同的函数或运算符(仅此而已)。

对于一些特定的示例,我们可以说类型具有函数Save()and Load(),或流运算符<<and >>。怎样才能在调用时自动执行++呢A.Save(s)?如果代码只是将执行相同地传递给所有成员,是否有任何方法可以自动化该过程?B.Save(s)C.Save(s)TYPE::Save(stream s)

这是自动生成的一些代码的示例(仅是函数Save())。编辑注意:此示例显示所有 3 个成员为同一类型,但该解决方案应该适用于任何类型组合的成员,只要它们都共享相关的函数/运算符

class TYPE
{
protected:
    XTYPE A, B, C;
public:
    void Save(stream s)
    {
        A.Save( s );
        B.Save( s );
        C.Save( s );
    }
};
Run Code Online (Sandbox Code Playgroud)

我的一个旧引擎使用疯狂的循环宏来实现这一目标。它使得使用宏构建类型变得更加容易(当有数百个类使用它们时),并且生成的类并不难理解,但宏本身很混乱并且过于复杂。我希望有更多的东西......内置到语言中。

c++ class member

3
推荐指数
1
解决办法
208
查看次数

标签 统计

c++ ×1

class ×1

list ×1

member ×1

pack ×1

python ×1

tuples ×1

unpack ×1