小编Mar*_*man的帖子

装饰器可以命名它创建的类吗?

我有一个装饰器,它包装函数并生成类(出于比以下示例更好的原因)。这一切都有效,除了我希望能够设置type().

例如,

>>> class Animal:
...     pass
... 
>>> def linnean_name(genus, species):
...     def _linnean_name(fn):
...         class _Animal(Animal):
...             binomial_name = (genus, species)
...             def converse(self):
...                 fn()
...         _Animal.__name__ = fn.__name__.title()
...         _Animal.__module__ = fn.__module__
...         return _Animal
...     return _linnean_name
... 
>>> @linnean_name('Vombatus', 'ursinus')
... def Wombat():
...     print("Hello, I am a wombat.")
... 
>>> sheila = Wombat()
>>> sheila.binomial_name
('Vombatus', 'ursinus')
>>> sheila.converse()
Hello, I am a wombat.
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是

>>> type(sheila)
<class '__main__.linnean_name.<locals>._linnean_name.<locals>._Animal'>
Run Code Online (Sandbox Code Playgroud)

我希望看到的地方

<class …
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
144
查看次数

Python:从名称中获取类型对象?

给定类型的名称,有没有办法获取类型对象?因此,例如:

   get_type('str') -> str
Run Code Online (Sandbox Code Playgroud)

我正在构建一个dict映射到一个类的各种案例,该类应该被实例化以处理它们。进口所有东西并冒循环进口的风险似乎有点过分。所以我想我可以用字符串指定它们,并在使用时查找类型。但是我如何查找类型?

以前似乎不太可能没有人问过这个问题,但我已经搜索过但没有找到。

python types

3
推荐指数
1
解决办法
223
查看次数

标签 统计

python ×2

types ×1