有关静态方法和私有方法的问题....
我们说我有这样的事情:
class MyClass(object):
@staticmethod
def __methodA(a):
return a
@staticmethod
def __methodB(b):
return b
@staticmethod
def __methodC(c):
return c
@staticmethod
def getAddition(a, b, c):
a = MyClass.__methodA(a)
b = MyClass.__methodB(b)
c = MyClass.__methodC(c)
return a + b + c
我真的只想要一个方法公开,我有一大堆辅助方法。对我来说,没有@staticmethod
似乎很愚蠢,因为那时我必须做这样的事情:
from myModule import MyClass
myClass = MyClass()
myClass.getAddition(1,2,3)
但是使用@staticmethod我可以做到这一点(这对我来说更有意义,因为我只调用一件事):
from myModule import MyClass
MyClass.getAddition(1,2,3)
我知道以前曾问过这些类型的问题。但我特别想知道,如果让我们说50个辅助方法并且仍然只有一个公共方法,那么使用@staticmethod
做这样的事情是不好的做法。
这个类可能会被很多人使用,我不知道为一个方法显式创建该对象是否有意义。
答案 0 :(得分:0)
我认为你的方法很好。或者,您可以使用模块而不是使用静态方法的类,因为当您不打算创建类的实例时,不需要创建类。
在Python私有方法中不是限制,而是推荐,因此无需限制对此类方法的访问。在开头用下划线表示这种方法就足够了。
以下是模块而不是类的示例:
// mymodule.py
def _methodA(a):
return a
def _methodB(b):
return b
def _methodC(c):
return c
def getAddition(a, b, c):
a = _methodA(a)
b = _methodB(b)
c = _methodC(c)
return a + b + c
// user code
import mymodule
mymodule.getAddition(1, 2, 3)