[Python-Dev] Exception for setting attributes of built-in type (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Mon Jun 15 23:31:06 CEST 2009
- Previous message: [Python-Dev] Exception for setting attributes of built-in type
- Next message: [Python-Dev] Exception for setting attributes of built-in type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Benjamin Peterson wrote:
2009/6/15 Nick Coghlan <ncoghlan at gmail.com>:
Guido van Rossum wrote:
In general, CPython isn't always consistent in raising AttributeError and TypeError when it comes to such policy issues: there are various places that raise TypeError in typeobject.c (and probably elsewhere) that simply forbid setting a specific attribute (another example is name). We're pretty inconsistent when it comes to looking up special methods as well - those that are looked up through dedicated slots in abstract.c usually raise TypeError, while those that are looked up via a PyType method usually raise AttributeError. What's a PyType method?
I was misremembering - for some reason I thought: a) _PyObject_LookupSpecial was a PyType method b) That it raised AttributeError itself instead of letting the caller decide what error to raise
It's still the case that (e.g.) special_lookup() in ceval.c raises an AttributeError, as do special method lookups from Python of the form "type(obj).method(obj)".
Whether CPython raises TypeError or AttributeError when it comes to special methods is really pretty arbitrary rather than a matter of any grand design.
Cheers, Nick.
P.S. If anyone feels like digging into the archives, the last time I can recall this topic coming up is when I was concerned about the original with statement implementation raising AttributeError rather than TypeError when it couldn't find an enter or exit method. Guido chimed in then (as now) to say that either exception was fine.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message: [Python-Dev] Exception for setting attributes of built-in type
- Next message: [Python-Dev] Exception for setting attributes of built-in type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]