【发布时间】:2019-07-29 10:24:29
【问题描述】:
如何更改导入模块的导入?
我创建了一个包,我想在进一步的项目中扩展它。 导入的包长这样:
/pck_name
/__init__.py
/point.py
/triangle.py
point.py:
class Point(object):
def __init__(self, name='test'):
self.name = name
三角形.py:
from pck_name.point import Point
class Triangle(object):
def __init__(self, points=None):
if points is None:
points = list()
for i in range(2):
points.append(Point())
self.points = points
然后我有另一个项目,我用新方法定义了一个 NewPoint 类:
class NewPoint(object):
def __init__(self, name='test'):
self.name = name
def print_name(self):
print(self.name)
我想要实现的是导入 pck_name.triangle 并使用 NewPoint 更改导入的 Point 以获得新功能:
from pck_name.triangle import Triangle
triangle = Triangle()
triangle.points[0].print_name()
我尝试了猴子修补,但如果我修补 Point 类,它就没有用了,因为 triangle.py 中的导入语句总是导入原始的 Point 类。
非常感谢!
【问题讨论】:
标签: python python-import monkeypatching