Klasa bazowa ma to:Python: Jak zamienić właściwość na zwykły atrybut?
def _management_form(self):
# code here
return form
management_form = property(_management_form)
W mojej klasie pochodnej, próbuję napisać to:
self.management_form = self.myfunc()
Ale oczywiście to nie działa. Mówi mi "nie mogę ustawić atrybutu", ponieważ ta właściwość nie ma żadnego narzędzia ustawiającego. Ale nie chcę tego ustawić, chcę na nowo zdefiniować, co oznacza "managent_form". Próbowałem najpierw wstawić del self.managent_form
, ale to też nie działało. Więc w jaki sposób mogę ją unieważnić?
jesteś pewien, że to dobry pomysł? To brzmi jak zerwanie relacji is-a ... – delnan
Sposób zdefiniowania właściwości, rekonstruuje obiekt za każdym razem, gdy go używasz, co jest po prostu głupie. Umieściłem tam oświadczenie, które jest wywoływane, jak 10 razy, i powoduje problemy, ponieważ muszę zmodyfikować niektóre jego właściwości, ale jest to bezużyteczne, jeśli zostanie zastąpione następnym razem. Nie mam pojęcia, dlaczego oni (twórcy Django) zrobili to w ten sposób. Zasadniczo po prostu chcę, aby został skonstruowany jeden raz, a następnie od tego momentu zwróci tę instancję. – mpen