是否有可能在Python中使用静态方法,因此我可以在不初始化类的情况下调用它们,例如:
ClassName.static_method()
Run Code Online (Sandbox Code Playgroud) 我来自Java背景,我是python的新手.我有几个脚本共享一些与读取和写入文件相关的应用程序独有的辅助函数.一些与阅读相关的功能,一些与写作相关.在搜索正确的方法时,我看到了这一点:Python中的静态方法?
他在回答中提到:
最后,谨慎使用static方法!在Python中很少需要使用静态方法,并且我已经看到它们多次使用,其中单独的"顶级"函数会更清晰.
我不太了解顶级函数,我不确定给出这个更好的简单示例:1)为具有静态读取器函数的读者创建一个类,为编写者创建相同的类或2)声明这些帮助器作为全球功能,为什么?
编辑:关于这个主题的真正好文章我刚刚找到http://tomayko.com/writings/the-static-method-thing
我正在考试这StringTokenizer.java门课,脑海里浮现出几个问题.
我注意到其他类使用的公共方法调用了一些完成所有工作的私有方法.现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节.我不确定我是否完全理解这背后的逻辑.
我理解,将字段设为私有以防止将无效值存储在其中非常重要(这只是众多原因之一).然而,当谈到私人方法时,我不确定它们为何如此重要.
例如,在StringTokenizer类的情况下,我们不能只将所有实现代码放在公共方法中吗?它如何对使用这些方法的类产生影响,因为这些方法的API(即调用这些公共方法的规则)将保持不变?我能想到为什么私有方法有用的唯一原因是它可以帮助你编写重复的代码.例如,如果所有公共方法都做了同样的事情,那么您可以声明一个执行此任务的私有方法,并且可以由公共方法使用.
其他问题,在私有方法中编写实现而不是公共方法有什么好处?
这是一个小例子:
public class Sum{
private int sum(int a, int b){
return a+b;
}
public int getSum(int a, int b){
return sum(a,b);
}
}
Run Code Online (Sandbox Code Playgroud)
VS ...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个样本如何更有益?
java encapsulation private-methods stringtokenizer public-method