У меня есть простой именованный кортеж, который функционирует как неизменный контейнер, который характеризует класс, который я разработал.
Из этого класса (который имеет именованный кортеж как переменную класса), я получил несколько дочерних классов, которые все переопределяют этот атрибути добавить новые поля в именованный кортеж
Я хочу сохранить поля, которые были определены в идентификаторе родительского класса, и добавить только те, которые являются новыми.Я предполагаю, что вы можете просто сохранить старый идентификатор в классе и сделать что-то вроде ID.2nd = "добавленный дочерний элемент формы". Но я бы предпочел, чтобы вы могли просто переопределить переменную идентификатора и получить доступ к ранее определенным идентификаторам через вызов super() или что-то еще
from collections import namedtuple
ID = namedtuple("myTuple", ["first", "second", "third", "fourth"])
ID.__new__.__defaults__ = ("default from parentclass", None , None , None)
class Parent(object):
_ID = ID()
def __init__(self, arg):
self.arg = arg
class Child(Parent):
#if there is a new _ID defined in Child
#, keep the fields it adds but also add the
#ones from the parent:
_ID = ID(second="adding from child")
#it should now contain the fields _ID.first == "default from parent" from parentclass
#and _ID.second == "adding from child"
Пока это работает, но если у меня есть еще один ребенок сейчас
class Child2(Child):
_ID = ID(third="adding from child")
#and now something like _ID.second = super()._ID.second
Я потеряю всю информацию, которая была добавлена в промежуточные классы.