This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2004年10月28日 18:08 by skip.montanaro, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| dir_type.patch | vstinner, 2009年02月16日 17:34 | |||
| Messages (5) | |||
|---|---|---|---|
| msg60592 - (view) | Author: Skip Montanaro (skip.montanaro) * (Python triager) | Date: 2004年10月28日 18:08 | |
Calling this a bug in Python is probably a misnomer.
Think of it as more of a "request for workaround".
Recent versions of SWIG create wrapper classes that
contain a Python class as a key in their __dict__'s.
Consequently, something like
[k for k in dir(obj) if k.startswith("set_")]
because there is an element in dir(obj) that's not a
string or a unicode object.
I realize dir() is mostly a debugging aid, unlikely to be
used frequently in production code, but I'd like see the
docs updated so that it's guaranteed to only return
strings or unicode objects and I'd like its implementation
changed to enforce that (and maybe even warn if
something else is found).
If this is seen as an acceptable change I will work up a
patch.
|
|||
| msg60593 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2004年10月28日 19:38 | |
Logged In: YES
user_id=21627
It seems that the documentation guarantees that it returns
"names" ("the list contains the object's attributes' names,
..."). Most people certainly expect names to be strings
(although they might be Unicode objects at some point in the
future :-).
So I think it is ok to fix dir in this respect.
|
|||
| msg81448 - (view) | Author: Daniel Diniz (ajaksu2) * (Python triager) | Date: 2009年02月09日 06:55 | |
Still present in trunk:69418:
class obj: pass
obj.__dict__[1] = 0
[k for k in dir(obj) if k.startswith("set_")]
|
|||
| msg82255 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2009年02月16日 17:34 | |
Yes, the issue still exists in 2009. Attached patch contains a test + a patch to test the type of each value of the dir() result. I'm not sure that it's a good idea to apply my patch. It's maybe not the job of Python to check the types of dir() result. |
|||
| msg83837 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2009年03月20日 00:47 | |
It's a feature request and it looks like except of Skip Montanaro in 2004, nobody requires this feature. I don't like my patch because it slows down Python just for a very rare case (this issue). I choose to close it. Reopen this issue if you think that this feature (check type of dir() result) is a must have ;-) |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:07 | admin | set | github: 41095 |
| 2009年03月20日 00:47:56 | vstinner | set | status: open -> closed resolution: wont fix messages: + msg83837 |
| 2009年02月16日 17:34:10 | vstinner | set | files:
+ dir_type.patch nosy: + vstinner messages: + msg82255 keywords: + patch |
| 2009年02月09日 06:55:49 | ajaksu2 | set | nosy:
+ ajaksu2 type: behavior messages: + msg81448 versions: + Python 2.7 |
| 2004年10月28日 18:08:16 | montanaro.historic | create | |