我正在尝试创建一个Python类(称之为CLASS
(,其中有一个大多数用户都希望使用的主函数(称之为FUNC
(。
在这种情况下,我希望用户能够调用类名,而无需在最喜欢的函数之前使用括号,例如:
CLASS(B, C)
而不是CLASS().FUNC(B, C)
这纯粹是美学上的,但这意味着对于将使用 FUNC 并且不关心他们可以显式调用的其他函数的用户,他们不需要编写烦人的大括号。
下面是我将创建的类类型的简单代码示例,其中 main 函数(为了连续性,我称之为 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 主调用(。
但是,由于 FUNC 采用参数B
和C
,这将返回错误:
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)
?
提前非常感谢!
这个问题在评论中@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