/* struct object has 1 member, namely a pointer to a function */
struct object {
int (*class)(void);
};
/* create a variable of type `struct object` and call it `new` */
struct object new;
/* make its `class` member point to the `rand()` function */
new.class = rand;
/* now call the "object method" */
new.class();
我建议您从示例源代码开始here它是Python3的源代码的一部分,它的存在是为了通过示例向您展示如何执行您需要的(以及其他一些事情)使用C API创建一个模块,在该模块中创建一个新类型,赋予该类型方法和属性。这基本上是源代码的第一部分,以
Xxo_Type
的定义为高潮,然后你会得到一些例子,说明如何定义各种类型的函数,一些你可能不关心的类型,最后是模块对象本身及其初始化(当然,你可以跳过大部分内容,虽然不是module对象及其初始化的部分,但它们导致了对感兴趣类型的定义;-)。在当你学习并根据你的具体需求调整源代码时,你可能会遇到的大多数问题在the docs中都有很好的答案,尤其是在section中关于“对象实现支持”的问题,但是你当然可以在这里开一个新的问题(每个问题最好是一个有很多实际问题的“问题”,总是一个麻烦!-)准确地展示你在做什么,你期待的结果,以及你所看到的,你会得到答案,其中往往包括一些非常有用的答案;-)。在
下面是一个简单的类(改编自3.x的http://nedbatchelder.com/text/whirlext.html):
你不能!C没有“类”,它只有
struct
s,而struct
不能有代码(方法或函数)。在但是,您可以使用函数指针来伪装它:
相关问题 更多 >
编程相关推荐