Python中有没有一种方法可以告诉特定函数如何使用我的类对象进行操作?

时间:2019-05-07 21:20:26

标签: python

我可以告诉另一个包中的某个函数如何使用用户定义的类对象进行操作吗?

例如,我有一个课程:

class Complex:
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag
    // ...

z = Complex(3, 5)

我想以某种方式覆盖math.sin()函数来处理我的复数,例如:

z1 = math.sin(z)

这应根据以下公式创建新的复数: sin(a + bi)= sin(a)* cosh(b)+ icos(a)* sinh(b)

致电

print(z1)

应打印

/// 10.472508533940392 - 73.46062169567367i 

有办法吗?

1 个答案:

答案 0 :(得分:1)

我建议您为自己的班级编写自己的方法。 否则,您可以使用称为“猴子修补”的东西。

import math
def sin(x):
    do_stuff...

math.sin = sin

但是我仍然认为,为您的类编写一个新函数是一个更好的主意