Python类默认使用一个函数
我试图创建一个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
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