Muszę zainicjować wszystkie gniazda instancji za pomocą Brak. Jak uzyskać wszystkie gniazda klasy pochodnej?Uzyskaj wszystkie __slots__ z klasy pochodnej
Przykład (który nie działa):
class A(object):
__slots__ = "a"
def __init__(self):
# this does not work for inherited classes
for slot in type(self).__slots__:
setattr(self, slot, None)
class B(A):
__slots__ = "b"
mogę użyć dodatkowego atrybutu class, która posiada otwory (w tym dziedziczone) dla wszystkich klas, takich jak
class A(object):
__slots__ = "a"
all_slots = "a"
def __init__(self):
# this does not work for inherited classes
for slot in type(self).all_slots:
setattr(self, slot, None)
class B(A):
__slots__ = "b"
all_slots = ["a", "b"]
ale wydaje nieoptymalny.
Wszelkie uwagi są mile widziane!
Cheers,
Jan
dlaczego trzeba '__slots__' –
używam tych klas do obsługi elementów biznesowych JSON po stronie klienta (” tags ": richt client, PyQt, dostęp do atrybutów za pomocą deskryptorów, leniwy rozwiązywanie referencji, sprawdzanie poprawności typów). Mam do miliona takich obiektów, więc wymagania dotyczące pamięci mogą być problemem (nawet jeśli nie mam teraz prawdziwych danych z tego świata - wiem, co myślisz ... źródło wszelkiego zła ...;)). Ale muszę również zabronić tworzenia dynamicznych atrybutów. Dzięki temu nie ma atrybutów "śmieci" podczas wysyłania nowo utworzonych obiektów z powrotem na serwer. – Knack