根据我所读的,类方法与静态方法基本相同,但有一些例外,其优点在于提供类指针。
因此,如果在类内定义了非实例方法,那么是否真的有什么理由使用静态方法而不是类方法呢?
编辑:由于你们中的一些人很快就把这个问题当作另一个问题的重复。这不是关于类和静态方法之间差异的问题。相反,这是一个关于如何在它们的功能重叠的绝大多数情况下决定两者之间的区别的问题。
编辑#2:我之所以问这个问题,是因为我正在重构其他人编写的一些现有代码。具体来说,有些子类与父类共享相同的模块,我打算将它们移动到单独的模块中。当发生这种情况时,需要修复静态方法中对类外常量的引用。我可以通过以下方式之一完成这项工作: 1. 从父模块导入所有常量 2. 将所有常量移动到父类中,并将所有子静态方法更改为类方法 3. 在每个对常量的引用前添加“ParentClass。”
我个人希望采取第二种方法,因为它避免了命名空间污染,这也是我提出这个问题的原因。这主要是一个风格问题。希望这提供了足够的背景信息。
因此,如果在类内定义了非实例方法,那么是否真的有什么理由使用静态方法而不是类方法呢?
编辑:由于你们中的一些人很快就把这个问题当作另一个问题的重复。这不是关于类和静态方法之间差异的问题。相反,这是一个关于如何在它们的功能重叠的绝大多数情况下决定两者之间的区别的问题。
编辑#2:我之所以问这个问题,是因为我正在重构其他人编写的一些现有代码。具体来说,有些子类与父类共享相同的模块,我打算将它们移动到单独的模块中。当发生这种情况时,需要修复静态方法中对类外常量的引用。我可以通过以下方式之一完成这项工作: 1. 从父模块导入所有常量 2. 将所有常量移动到父类中,并将所有子静态方法更改为类方法 3. 在每个对常量的引用前添加“ParentClass。”
我个人希望采取第二种方法,因为它避免了命名空间污染,这也是我提出这个问题的原因。这主要是一个风格问题。希望这提供了足够的背景信息。