我知道你不能从object
继承的对象上调用object.__setattr__
,但是两者之间还有什么不同吗?如果这很重要,我正在Python 2.6中工作。setattr()和object .__ setattr __()之间有什么区别?
7
A
回答
12
setattr(instance, name, value)
是instance.__setattr__(name, value)
的语法糖。
你只需要调用object.__setattr__(...)
类定义中,而且只有直接继承object
- 如果你继承别的东西,Spam
例如,那么应该使用super()
获得在层次结构的下一个项目,或致电Spam.__setattr__(...)
- 这样您就不会冒险丢失超级班级直接跳过object
所定义的行为。
+2
谢谢,这解释了它。代码可能使用'object .__ setattr__'来跳过超类的__setattr__。 –
+0
_“setattr(实例,名称,值)是语法糖,例如.__ setattr __(name,value)”_ - 它是真的吗?我依稀记得有些类型没有'__getattr__',但是无论如何获取属性都适用于它们。这里不一样吗? –
相关问题
- 1. colourSliderGrp和setAttr之间的链接
- 2. python combined setattr和getattr
- 3. 对象.__ setattr __()和直接设置是否有区别?
- 4. Python:__setitem__之间的差异; setattr;设置
- 5. C++中object和object()之间的区别是什么
- 6. Object-Graph和类图之间有什么区别?
- 7. Python setattr vs __setattr__ UnicodeEncodeError
- 8. [Object,Object]和Array之间的区别(2)
- 9. dpm()和dsm()之间有什么区别?
- 10. @dynamic和@synthesize之间有什么区别?
- 11. vbNullString和“”之间有什么区别吗?
- 12. * zoom和zoom之间有什么区别?
- 13. String.Concat,string.format和+之间有什么区别?
- 14. StaticLayout和DynamicLayout之间有什么区别
- 15. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 16. :: after和after之间有什么区别?
- 17. %.02f和%.2f之间有什么区别?
- 18. {$ var}和$ var之间有什么区别?
- 19. ReleaseFloatArrayElements和DeleteLocalRef之间有什么区别
- 20. {0}和“”之间有什么区别?
- 21. getA()和this.getA()之间有什么区别?
- 22. @observable和@published之间有什么区别
- 23. $ {}和#{}之间有什么区别?
- 24. url.getFile()和getpath()之间有什么区别?
- 25. KVC和Properties之间有什么区别?
- 26. Lazy.Force()和Lazy.Value之间有什么区别
- 27. “层”和“层”之间有什么区别?
- 28. 1.1em和1.05em之间有什么区别?
- 29. proc和lambda之间有什么区别?
- 30. ViewFlipper和ViewSwitcher之间有什么区别
'setattr'是你在另一个对象上调用的东西,'__setattr __()'是你在你自己的对象上实现的东西。 –
'setattr(obj,attr,value)'只调用'obj .__ setattr __(attr,value)',至少对于新样式类。 – agf