6

私はこのCコードを持っています:

    typedef struct test * Test;

    struct test {
        void *a;
        Test next;
    };

これと同等のものを Python でどのように実装しますか (それが可能な場合)?

4

1 に答える 1

20

Python では、任意の型のオブジェクトを変数に割り当てることができます。したがって、次のように任意のクラスを使用できます。

class test(object):
    __slots__ = ['a', 'next']

x = test()
x.next = x
x.a = 42

__slots__オプションであり、メモリのオーバーヘッドを削減する必要があることに注意してください(属性へのアクセスも高速化される可能性があります)。また、次のようにコンストラクターを作成することもよくあります。

class test(object):
    def __init__(self, a, next):
        self.a = a
        self.next = next

x = test(21, None)
assert x.a == 21

クラスが不変である可能性がある場合は、namedtupleも参照してください。

import collections
test = collections.namedtuple('test', ['a', 'next'])
于 2013-05-23T19:34:56.320 に答える