Próbuję zrozumieć, kiedy użyć __getattr__lub __getattribute__. Dokumentacja wspomina __getattribute__dotyczy klas w nowym stylu. Co to są zajęcia w nowym stylu?
Niedawno przeczytałem o tej getattr()funkcji . Problem polega na tym, że wciąż nie mogę pojąć jego użycia. Jedyne, co rozumiem, getattr()to getattr(li, "pop")to, że dzwonię li.pop. Nie rozumiałem, kiedy książka wspomniała, jak go używać, aby uzyskać odniesienie do funkcji, nie znając jej nazwy do czasu wykonania. Może w ogóle to …
Próbuję zrozumieć różnicę między __getattr__a __getattribute__jednak jestem braku na niego. Odpowiedź na pytanie przepełnienie stosu Różnica między __getattr__VS__getattribute__ mówi: __getattribute__jest wywoływany przed spojrzeniem na rzeczywiste atrybuty obiektu, więc może być trudny do prawidłowego wdrożenia. Bardzo łatwo możesz skończyć w nieskończonych rekurencjach. Nie mam pojęcia, co to znaczy. Następnie mówi: Prawie …
Co mam przekazać jako pierwszy parametr " object" do funkcji setattr(object, name, value), aby ustawić zmienne w bieżącym module? Na przykład: setattr(object, "SOME_CONSTANT", 42); dające taki sam efekt jak: SOME_CONSTANT = 42 w module zawierającym te linie (z poprawnym object). Generuję kilka wartości na poziomie modułu dynamicznie, a ponieważ nie …
Jak można zaimplementować odpowiednik a __getattr__w klasie, w module? Przykład Podczas wywoływania funkcji, która nie istnieje w statycznie zdefiniowanych atrybutach modułu, chcę utworzyć wystąpienie klasy w tym module i wywołać na niej metodę o tej samej nazwie, która nie powiodła się w wyszukiwaniu atrybutów w module. class A(object): def salutation(self, …
Chcę przesłonić dostęp do jednej zmiennej w klasie, ale normalnie zwrócić wszystkie inne. Jak to osiągnąć za pomocą__getattribute__ ? Wypróbowałem następujące rozwiązania (które powinny również zilustrować, co próbuję zrobić), ale pojawia się błąd rekursji: class D(object): def __init__(self): self.test=20 self.test2=21 def __getattribute__(self,name): if name=='test': return 0. else: return self.__dict__[name] >>> …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.