Я пишу оболочку Python около getifaddrs()
. В интерфейсе используется тип struct ifaddrs
, первое поле которого является указателем на другой struct ifaddrs
.
struct ifaddrs {
struct ifaddrs *ifa_next; /* Pointer to the next structure. */
... /* SNIP!!11 */
};
Однако, представляя это в Python:
class struct_ifaddrs(Structure):
_fields_ = [
('ifa_next', POINTER(struct_ifaddrs)),]
выдает эту ошибку:
matt@stanley:~/src/pydlnadms$ ./getifaddrs.py
Traceback (most recent call last):
File "./getifaddrs.py", line 58, in <module>
class struct_ifaddrs(Structure):
File "./getifaddrs.py", line 61, in struct_ifaddrs
('ifa_next', POINTER(struct_ifaddrs)),
NameError: name 'struct_ifaddrs' is not defined
struct_ifaddrs
не будет привязан к текущей области, пока не будет завершено определение класса. Конечно, являясь типом указателя, очевидно, что определение struct_ifaddrs
не требуется при объявлении, как в C, но тип должен быть разыменован при последующем использовании. Как я могу продолжить?