Python类默认使用一个函数

2024-04-26 09:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个Python类(称之为CLASS),其中有一个大多数用户都希望使用的主函数(称之为FUNC

在这种情况下,我希望用户能够调用类名,而不需要在最喜欢的函数前面使用括号,例如:

CLASS(B, C)而不是CLASS().FUNC(B, C)

这是纯粹的美学,但这意味着,对于那些将使用FUNC而不关心可以显式调用的其他函数的用户,他们不需要编写恼人的花括号

下面是我将创建的类的一个简单代码示例,其中主函数(我称为FUNC表示连续性)使用类中的其他函数:

class Example:

    def dummy_operation(self,A):
        return A*2.

    def FUNC(self,B,C):
        A = self.dummy_operation(B)
        result = A + C
        return result

所以在这里,Example代替了CLASS来提高易读性

一种方法是使用if '__main__'语句(参见-Python main call within class

但是,由于FUNC接受参数BC,这将返回一个错误:

if __name__ == '__main__':
    Example().target_function()

输出:

TypeError: target_function() missing 2 required positional arguments: 'B' and 'C'

有没有一种方法可以传递Example(B,C),实际上它在调用Example().FUNC(B,C),但是如果需要,仍然可以调用Example().dummy_operation(A)

非常感谢


Tags: 方法函数用户selfreturnmainexampledef
1条回答
网友
1楼 · 发布于 2024-04-26 09:33:18

这个问题在评论中被@snakecharmerb解决了

class Example:

    def dummy_operation(self,A):
        return A*2.

    def __call__(self,B,C):
        A = self.dummy_operation(B)
        result = A + C
        return result

Example = Example()
print(Example(1,1))
print(Example.dummy_operation(1))

输出:

3.0
2.0

相关问题 更多 >