我正在考虑三种方法来实现辅助函数,即仅由类内的特定方法调用的函数。选项有:
- 定义外部函数
- 定义类的函数
- 在调用函数内定义一个函数
这是显示三个选项的最小代码:
class test(object):
def mytest1(self, n):
return outloop(n)
def mytest2(self, n):
return self.inloop(n)
def inloop(self, n):
if n < 0:
return 0
return self.inloop(n - 1) + 1
def mytest3(self, n):
def innerloop(n):
if n < 0:
return 0
return innerloop(n - 1) + 1
return innerloop(n)
def outloop(n):
if n < 0:
return 0
return outloop(n - 1) + 1
我测试了性能,所有三个似乎大致相同。我的问题:您能否分享一下我在这三个选项之间进行选择时应该注意的一些注意事项?
我会很高兴获得关于何时应该使用每种架构的见解和指导。
最佳答案
从面向对象设计的角度来看,调用者组合方法调用来实现其结果比调用类本身更好。这为调用者的代码创造了更大的灵 active ,这在需求不断变化的世界中通常是一件好事。
就类中定义的辅助函数而言,问题是辅助函数是所调用方法的功能所固有的或必不可少的。换句话说,将功能拆分出来并创建两个有用的函数是否有意义,或者您真的只有一个有用的函数吗?
将辅助函数定义为外部函数时,相关函数应该放在一个类中,以使代码维护更容易。请记住,任何类(class)都应遵循 Single Responsibility Principle并且只有一个理由去改变。
关于python - 类内的辅助函数 - 各种方法的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970005/