Wiem, że nie można wywołać object.__setattr__
na obiektach nie odziedziczonych po object
, ale czy jest jeszcze coś innego między tymi dwoma? Pracuję w Pythonie 2.6, jeśli to ma znaczenie.Jaka jest różnica między setattr() a obiektem .__ setattr __()?
Odpowiedz
setattr(instance, name, value)
to cukier syntaktyczny do instance.__setattr__(name, value)
.
będzie trzeba tylko zadzwonić object.__setattr__(...)
wewnątrz definicji klasy, a następnie tylko wtedy, gdy bezpośrednio instacji object
- jeśli były instacji coś innego, Spam
na przykład, to należy użyć super()
dostać następną pozycję w heirarchy lub zadzwoń pod numer Spam.__setattr__(...)
- w ten sposób nie ryzykujesz brakującego zachowania, które zdefiniowały superklasy, przeskakując je bezpośrednio pod numer object
.
Dzięki, to wyjaśnia. Kod prawdopodobnie używa 'object .__ setattr__' dla dokładnego celu pominięcia __setattr__ klasy superklasy. –
_ "setattr (instancja, nazwa, wartość) to na przykład cukier syntaktyczny .__ setattr __ (name, value)" _ - czy to naprawdę? Niejasno pamiętam, że niektóre typy nie mają '__getattr__', ale pobieranie atrybutów działa dla nich niezależnie. Czy tu nie jest tak samo? –
- 1. Różnica między obiektem a *?
- 2. Jaka jest różnica między modelem widoku a obiektem przesyłania danych?
- 3. Python __init__ setattr na argumenty?
- 4. Równowartość w Ruby Pythona setattr()
- 5. Różnica między obiektem zdarzenia a zmienną warunku
- 6. Jaka jest różnica między ramką a ramką?
- 7. Kotlin: Różnica między obiektem a obiektem towarzyszącym w klasie
- 8. Jaka jest różnica między obiektem modelu MVC, obiektem domeny a DTO
- 9. Dlaczego setattr i getattr zezwalają na odstępy?
- 10. getattr i setattr na zagnieżdżonych obiektach?
- 11. Jaka jest różnica między cat_id a term_id?
- 12. Jaka jest różnica między IEnumerable a tablicami?
- 13. Jaka jest różnica między == a === w Verilog?
- 14. Jaka jest różnica między UseCase a Workflow?
- 15. Jaka jest różnica między pakietem a intencją?
- 16. Jaka jest różnica między węzłem a wierzchołkiem?
- 17. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 18. Jaka jest różnica między alertem a window.alert?
- 19. Jaka jest różnica między @android a android:
- 20. Jaka jest różnica między krotką a kompresją?
- 21. Jaka jest różnica między proxy a reify?
- 22. Jaka jest różnica między @Inject a @PersistenceContext?
- 23. Jaka jest różnica między sqlite3 a pdo_sqlite
- 24. Jaka jest różnica między Const a Constant?
- 25. Jaka jest różnica między Socket.IO a Firebase?
- 26. Jaka jest różnica między macierzą a tablix?
- 27. Jaka jest różnica między KERN_INVALID_ADDRESS a KERN_PROTECTION_FAILURE?
- 28. Jaka jest różnica między Float.POSITIVE_INFINITY a Float.MAX_VALUE?
- 29. Jaka jest różnica między SGML a XML?
- 30. Jaka jest różnica między Cake a Leiningen?
'setattr' jest czymś, co wywołujesz na innym obiekcie,' __setattr __() 'jest czymś, co implementujesz na swoim własnym obiekcie. –
'setattr (obj, attr, value)' po prostu wywołuje 'obj .__ setattr __ (attr, value)', przynajmniej dla klas w nowym stylu. – agf