Загрузить UserControl в TabItem

Вы немного смущены тем, что вы пытаетесь сделать. Типы, также известные как классы, являются объектами, как и все остальное в python. Когда вы пишете int в своих программах, вы ссылаетесь на глобальную переменную, называемую int, которая оказывается классом. То, что вы пытаетесь сделать, это не «лить строку для ввода», она обращается к встроенным переменным по имени.

Как только вы это понимаете, решение легко увидеть:

def get_builtin(name):
    return getattr(__builtins__, name)

Если вы действительно хотели превратить имя типа в типа, вот как вы это сделаете. Я использую deque, чтобы выполнить обход дерева без рекурсии.

def gettype(name):
    from collections import deque
    # q is short for "queue", here
    q = deque([object])
    while q:
        t = q.popleft()
        if t.__name__ == name:
            return t
        else:
            print 'not', t

        try:
            # Keep looking!
            q.extend(t.__subclasses__())
        except TypeError:
            # type.__subclasses__ needs an argument, for whatever reason.
            if t is type:
                continue
            else:
                raise
    else:
        raise ValueError('No such type: %r' % name)
13
задан Dave Clemmer 28 February 2013 в 09:19
поделиться