Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将模块中的所有函数添加为对象的方法,而不复制代码?_Python - Fatal编程技术网

Python 是否将模块中的所有函数添加为对象的方法,而不复制代码?

Python 是否将模块中的所有函数添加为对象的方法,而不复制代码?,python,Python,如何将某些模块中的所有函数添加为指定对象的方法 如果您有modulemodulename,则可以使用 from modulename import * 我想将它们添加为一些obj的方法,因为它们都接受该对象作为第一个参数,并且我发现x.y(z)比y(x,z)更有趣,因为习惯。试试这个: def add_methods(driver): for name, obj in inspect.getmembers(sys.modules[__name__]): if inspect.isf

如何将某些模块中的所有函数添加为指定对象的方法

如果您有module
modulename
,则可以使用

from modulename import *
我想将它们添加为一些
obj
的方法,因为它们都接受该对象作为第一个参数,并且我发现
x.y(z)
y(x,z)
更有趣,因为习惯。

试试这个:

def add_methods(driver):
  for name, obj in inspect.getmembers(sys.modules[__name__]):
    if inspect.isfunction(obj) and name != 'add_methods':
      setattr(driver, name, obj.__get__(driver))
from inspect import getmembers, isfunction
import modulename

class Obj(object):
    ...

obj_ = Obj()

for name, func in getmembers(modulename, isfunction):
    setattr(obj_, name, func)

print(obj_.__dict__)