Với các module sau:tại sao python inspect.isclass lại nghĩ một cá thể là một lớp?
class Dummy(dict):
def __init__(self, data):
for key, value in data.iteritems():
self.__setattr__(key, value)
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__=dict.__setitem__
__delattr__=dict.__delitem__
foo=Dummy({"one":1, "two":2})
tại sao foo
hiện lên trong đầu ra của inspect.getmembers(..., predicate=inspect.isclass)
?
$ python2.5
Python 2.5.2 (r252:60911, Aug 28 2008, 13:13:37)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import junk
>>> import inspect
>>> inspect.getmembers(junk, predicate=inspect.isclass)
[('Dummy', <class 'junk.Dummy'>), ('foo', {'two': 2, 'one': 1})]
>>> inspect.isclass(junk.foo)
True
tôi mong đợi rằng inspect
sẽ chỉ trả lại Dummy
vì đó là định nghĩa lớp duy nhất trong mô-đun. Rõ ràng, mặc dù, junk.foo là một lớp trong mắt của mô-đun kiểm tra. Tại sao vậy?
Đặc biệt thiếu của 'AttributeError' mà sẽ gây ra những lỗi thực sự tuyệt đối __horrible__. – katrielalex
Cảm ơn bạn. Lời giải thích của bạn có ý nghĩa hoàn chỉnh. –