Python类默认使用一个函数

Python类默认使用一个函数,python,function,class,main,Python,Function,Class,Main,我试图创建一个Python类(称之为class),其中有一个大多数用户都希望使用的主函数(称之为FUNC) 在这种情况下,我希望用户能够调用类名,而无需在最喜欢的函数前使用括号,例如: CLASS(B,C)而不是CLASS().FUNC(B,C) 这纯粹是为了美观,但这意味着,对于使用FUNC而不关心可以显式调用的其他函数的用户,他们不需要编写恼人的花括号 下面是我将创建的类的一个简单代码示例,其中主函数(我称为FUNC表示连续性)使用类中的其他函数: class Example: d

我试图创建一个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'\uuuuu main\uuuu'
语句(请参阅-)

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

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

是否有方法传递
示例(B,C)
,实际上它正在调用
Example().FUNC(B,C)
,但如果需要,仍然可以调用
Example().dummy\u操作(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))
输出:


我看不出把类和它的方法混淆有什么意义。创建
Example
的实例,而不仅仅是将
target\u函数
作为常规函数,这有什么意义呢?也许您希望类的实例实际存储任何信息吗?如果没有,您可能只需要将其放在一个单独的模块中,导入该模块,然后调用诸如
my_module.FUNC(a,B)
@chepner之类的函数。重点是有些用户希望将类函数FUNC用作默认值,但只关心类名,然而,一些希望深入使用该类的更多功能的人将能够调用class().FUNC2(…),但前提是他们确实想要使用一些子例程。对于那些不熟悉这门课的细节的人来说,这纯粹是为了美学。我使用的实际类比这个示例大得多,功能要复杂得多。我认为,您可以通过在
\uuuuu call\uuuuu
的主体之后添加行
FUNC=\uuuuuu call\uuuuuuu
(缩进级别与
def
语句相同)来对其进行别名。
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