gpt4 book ai didi

python - 声明内部函数的大多数 pythonic 方式

转载 作者:太空狗 更新时间:2023-10-30 00:04:33 26 4
gpt4 key购买 nike

我正在编写一个程序,其中我使用两个主要函数,但是这两个函数使用相同的内部函数。我想知道我应该如何以大多数 pythonic 方式编写它们?我的观点是将这些助手隐藏在内部某处并且不要重复助手函数。

def main_function1():
helper1()
helper2()
#dowork1

def main_function2()
helper1()
helper2()
#dowork2

def helper1()
#workhelp1

def helper2()
#workhelp2

我能想到的唯一合理的解决方案是用..私有(private)函数声明静态类?但是因为:

Strictly speaking, private methods are accessible outside their class, 
just not easily accessible. Nothing in Python is truly private[...]

我卡住了,没有想法。

发件人:http://www.faqs.org/docs/diveintopython/fileinfo_private.html

主题:Why are Python's 'private' methods not actually private?

我还考虑过用内部助手和切换器声明一个主函数作为参数来确定应该运行哪个函数,但我想这是一个非常糟糕的解决方案。

目前我发现最准确的唯一方法是将普通类声明为:

class Functions:
def main_function1(self):
print("#first function#")
self.helper1()
self.helper2()

def main_function2(self):
print("#second function#")
self.helper1()
self.helper2()

def helper1(self):
print("first helper")

def helper2(self):
print("second helper")

Functions().main_function1()
Functions().main_function2()
print("###")
Functions().helper1()

输出:

#first function#
first helper
second helper
#second function#
first helper
second helper
###
first helper

但在这里我也可以访问助手,这不是什么大问题,但仍然让我有理由怀疑。

最佳答案

Python 中没有私有(private)函数。相反,通过在非公开方法的名称前加上下划线,您向类的用户发出信号,表明这些方法不打算在外部调用:

class Functions:
def main_function1(self):
print("#first function#")
self._helper1()
self._helper2()

def main_function2(self):
print("#second function#")
self._helper1()
self._helper2()

def _helper1(self):
print("first helper")

def _helper2(self):
print("second helper")

这符合“我们这里都是同意的成年人”的原则——类的非public方法你可以动,但如果用错了,后果自负。

关于python - 声明内部函数的大多数 pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55320408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com