我有一个类,我希望它与我在机器中安装的某个模块中的另一个类具有相同的__format__
方法。怎样才能正确地将它“复制”到我的类中,使它的工作方式与我使用模块的类完全相同?你知道吗
Edit:具体地说,我想在自己的类中使用包的uncertainties.UFloat.__format__
方法。你知道吗
MCVE公司:
class MyClass:
def __init__(self, arg):
self.v, self.u = arg
def __format__... ?
所以,就像UFloat
一样:
>>> '{:L}'.format(uncertainties.ufloat(1, 0.1))
'1 \\pm 0.1'
预期行为应相同:
>>> '{:L}'.format(MyClass(1, 0.1))
'1 \\pm 0.1'
单程,如@胡安帕.阿里维拉加提到这里,只需将方法更改为指向
OtherClass
方法:不过,这是一种相当笨拙的方法。如果是静态方法,我建议使用包装器方法来完成相同的任务:
或者甚至将当前对象转换为另一个类并简单地调用方法(如果是实例方法):
另一种解决方案是找到
OtherClass
的源代码,或者仔细观察行为,然后从本质上重写功能。通常我会通过查看源代码存储库来实现这一点,但是快速的pypi搜索uncertainties
和相关文档并没有显示git存储库可供借鉴的迹象,因此您必须以一种艰难的方式来实现。Python的inspect
模块可以帮助查找库的各个组件的源代码,如果这有帮助的话。你知道吗特别是看一下
uncertainties
,正如您在问题中提出的那样,库中的ufloat
类型似乎使用了AffineScalarFunc
的format函数,可以作为uncertainties.UFloat
访问。您可以这样做来查看uncertainties.UFloat.__format__
的源代码:您可以尝试对算法进行反向工程/复制,或者找出如何调整
MyClass.__format__
以将值传递到uncertainties.UFloat.__format__
中,从而不会使另一个类崩溃。我推荐后一种建议。你知道吗我不打算进一步讨论这个解决方案,因为该方法的代码有459行,我不想弄乱它。你知道吗
相关问题 更多 >
编程相关推荐