Micropython——如何在C中创建一个继承了另一个同样在C中定义的类型的类型?

Micropython——如何在C中创建一个继承了另一个同样在C中定义的类型的类型?,python,c,micropython,Python,C,Micropython,如何在C中创建一个新的Python类型,该类型继承另一个同样在C中定义的Python类型 行为应该是这样的: # TypeA defined in C, has members called a1, a2, ... a = TypeA() # TypeB defined in C, has members called b1, b2, ... # ... and inherits TypeA b = TypeB() # valid because TypeB inherits TypeA p

如何在C中创建一个新的Python类型,该类型继承另一个同样在C中定义的Python类型

行为应该是这样的:

# TypeA defined in C, has members called a1, a2, ...
a = TypeA()
# TypeB defined in C, has members called b1, b2, ...
# ... and inherits TypeA 
b = TypeB()

# valid because TypeB inherits TypeA
print(b.a1())
# invalid because TypeA does NOT inherit TypeB
print(a.b1())

这是给你的。如果CPython回答有助于回答Micropython的问题,我将只接受它。

从Micropython 1.9.4开始,基于效率原因,不支持对C中定义的类型进行继承。阿卡,没有它我们可以走很长的路。是的,最近,这方面的用例出现得越来越频繁,所以它最终会被实现。

太广泛了<代码>请编辑问题,将其限制为特定问题,并提供足够详细的信息,以确定适当的答案。避免一次问多个不同的问题。关于这一点,有什么不够具体?只是想一想,如果您的层次结构不是很复杂,您可以让C端处理继承,并利用Python的duck类型。更具体地说,使用C中的树或查找表维护继承,在C中执行类型检查和强制转换,如果有效,则调用方法,Python基本上看不到所有内容。不确定如何做,但我曾经做过的是,使用类型为
TypeA
的成员创建结构
TypeB
。因此,我可以做一些类似于
b.memberA.a1()
@PhoenixBlue的事情,这是不可接受的,因为语法与仅在
.py
中发生的继承不同。C中的继承和
.py中的继承应该没有区别。