相关疑难解决方法(0)

如何在Python中获取当前模块中所有类的列表?

我已经看到很多人从模块中提取所有类的例子,通常是这样的:

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj
Run Code Online (Sandbox Code Playgroud)

真棒.

但我无法找到如何从当前模块中获取所有类.

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()
Run Code Online (Sandbox Code Playgroud)

这可能是非常明显的事情,但我找不到任何东西.谁能帮我吗?

python reflection inspect

278
推荐指数
7
解决办法
16万
查看次数

在运行时创建Python类的最不好的方法是什么?

我正在使用一个接受类作为输入的ORM,我需要能够为它提供一些动态生成的类.目前,我正在做这样一个人为的例子:

def make_cls(_param):
   def Cls(object):
       param = _param
   return Cls

A, B = map(make_cls, ['A', 'B'])

print A().foo
print B().foo
Run Code Online (Sandbox Code Playgroud)

虽然这样可以正常工作,但感觉有点偏差:例如,两个类都<class '__main__.Cls'>在repl上打印.虽然名称问题不是什么大问题(我想我可以通过设置解决它__name__),但我想知道是否还有其他我不知道的事情.所以我的问题是:有没有更好的方法来动态创建类或者我的示例已经很好了?

python class

8
推荐指数
1
解决办法
233
查看次数

Python动态类名

可能重复:
python模块的动态加载
python:如何动态地向类添加属性?

我有一个包含文件名和类名的字典如何导入这个类名,我该如何创建这个类?

例:

classNames = { 'MCTest':MCTestClass}
Run Code Online (Sandbox Code Playgroud)

我想导入MCTest并创建MCTestClass.

python dynamic

0
推荐指数
1
解决办法
3790
查看次数

标签 统计

python ×3

class ×1

dynamic ×1

inspect ×1

reflection ×1