_ctypes._SimpleCData .__ mul __()方法在哪里实现?

时间:2012-12-10 18:53:51

标签: python ctypes

例如:

>>> ctypes.c_char * 2
<type '_ctypes.SimpleType'>

类型c_char_Array_2是由__mul__()中的_ctypes._SimpleCData方法动态创建的,我想知道它是如何做到的,但我找不到任何关于__mul__()方法,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果您想查看ctypes的C源代码实现,可以找到它herectypes是在C中实现的,因此您无法在任何__mul__文件中找到.py的实现。

使用metaclassing可以在python中完成这样的事情 简单的例子:

class Spam(type):
    def spam(cls): print("spam:", cls.__name__)
    def __mul__(self, other):
        ' create a new class on the fly and return it '
        class Eggs(metaclass=Spam):
            def eggs(self): print("eggs" * other)
        return Eggs

class Ham(metaclass=Spam):
    def ham(self): print('ham')

print(Ham)                 # <class '__main__.Eggs'>
Ham.spam()                 # spam: Ham
Ham().ham()                # ham
# create new class:
TwoEggs = Ham * 2
print(TwoEggs)             # <class '__main__.Eggs'>
TwoEggs.spam()             # spam: Eggs
TwoEggs().eggs()           # eggseggs

(pyhton3语法,python2使用__metaclass__属性而不是metaclass参数。)