Python 'type'和'tuple'的子类`

Python 'type'和'tuple'的子类`,python,python-3.x,metaclass,symbolic-math,Python,Python 3.x,Metaclass,Symbolic Math,出于一个有趣(有效但无关)的原因,我想做以下几点: class Head(type, tuple): pass 但这导致了 TypeError: multiple bases have instance lay-out conflict (关于蟒蛇3.3和蟒蛇2.7) 有办法吗 出于好奇,我想创建一些行为类似于Mathematica表达式(Derivative[1][g][x]beingg'(x))的东西。我知道还有其他方法,但出于教育目的,我坚持使用这种方法。我似乎找不到合适的链接

出于一个有趣(有效但无关)的原因,我想做以下几点:

class Head(type, tuple):
    pass
但这导致了

TypeError: multiple bases have instance lay-out conflict
(关于蟒蛇3.3和蟒蛇2.7)

有办法吗


出于好奇,我想创建一些行为类似于
Mathematica
表达式(
Derivative[1][g][x]
being
g'(x)
)的东西。我知道还有其他方法,但出于教育目的,我坚持使用这种方法。

我似乎找不到合适的链接,但关键是Python不支持多个内置类型的多重继承。不能创建同时从“type”和“tuple”、或从“int”和“str”或大多数其他组合继承的类。与实例的内部布局相关的主要是内部原因:“int”对象的内存布局包含整数值的存储;但这与包含字符存储的“str”对象的布局不兼容。不可能创建从这两个类继承的类的实例,因为我们不知道它应该具有哪个内存布局

将其与仅直接或间接从
对象继承的类实例的内存布局进行比较。这样的实例只需要存储
\uuuu dict\uuu
,这是一个包含属性的字典。对于任何多重继承图,这都是毫无问题的


这两种情况(在Python2.2中)已组合成以下“尽力而为”的方法:只有在最多有一个内置基类型的情况下,才可能实现继承。在这种情况下,内存布局可以从该内置类型所需的布局开始,然后包含
\uu dict\uuu
,以存储其他基类所需的任何属性。

为什么您认为这样做是实现
派生[1][g][x]的好方法
thing?从
type
继承是毫无意义的;它不会给你任何
tuple
还没有给你的东西。@BrenBarn,我想要一个带有实例(导数[1])的类(导数),它们本身就是带有实例的类,比如导数[1][g],它们本身就是等等。我不是说这是解决问题的好方法,但这是一个有趣的方法。基本上,我想要元类(因此我使用
类型
)和
元组
\uuuueq\uuuu
(因为我将所有参数保存在元组中)。我可以使用元组作为类的属性,但这不如类本身作为元组的子类那么好。所以我不明白为什么子类化
type
是毫无意义的。我还可以如何创建元类(没有hacks)?为什么需要派生实例作为类?只需使用
\uuuuuGetItem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
调用一个类,该类返回另一个具有
\uuuuuuuuuuuuuuGetItem\uuuuuuuuuuuuuuuuuuuuuuuu
等属性的类的实例。尝试这样做可能会很有趣。从元组继承得到的唯一额外的东西是能够说
(导数(1)(g)(x))[2]==x
,我认为这是混淆的。如果需要获取第n个参数,请创建一个命名方法。如果您确实喜欢数组访问语法,可以使用
\uuuu getitem\uuuu
将其放回原处。所以我想说,如果你想从类型而不是元组继承任何东西。谢谢,这正是我想知道的。如果你找到一个参考,我会很高兴地添加到这里。