Почему я не могу изменить значение атрибута суперкласса с помощью структуры ctypes? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть два класса Foo и Foo2. Foo должен иметь атрибут generi c, который будет изменен позже с помощью экземпляра Foo2. Вот код:

from ctypes import *

class Foo(Structure):
    _fields_ = [('address', c_uint32)]
    _var = None

    @property
    def var(self):
        return self._var

    def __init__(self, var=0):
        super(Foo, self).__init__()
        self.var = var

    @var.setter
    def var(self, value):
        self._var = value


class Foo2(Foo):
    _fields_ = [('First', Foo),
            ('Second', Foo)]

    def __init__(self):
        super(Foo2, self).__init__(var=0)

Когда я пытаюсь сделать следующее:

b = Foo2()
b.var = 0xff
print(hex(b.var))
b.First.var = 0
b.Second.var = 1
print(b.First.var)
print(b.Second.var)

Я могу получить доступ и изменить только унаследованную переменную, но не переменную объектов Foo. Сначала и Во-вторых, как результат всегда нет. Чего мне не хватает?

Любая помощь очень ценится! Спасибо

...