python - 我如何声明一个仅由同一类的另一个函数使用的python类函数?
问题描述
假设我有以下课程:
class A():
def fn1(self):
pass
def fn2(self):
pass
现在我想fn3
在fn1
and中调用函数fn2
。该函数fn3
应该是只有fn1
并且fn2
应该能够调用它的方式(因为只有orfn3
才需要)。fn1
fn2
我的方法是,
class A():
def fn3(self):
pass
def fn1(self):
fn3()
pass
def fn2(self):
fn3()
pass
fn3
在这里,我看到了应该有论据的缺点self
(在我的情况下fn3
没有利用它)。另一个缺点是fn3
可以被在类之外声明的其他对象调用,这不是必需的。
解决方案
你会在 Python 中找到最接近“私有”方法的方法是用两个下划线声明它__
。在你的情况下:
class A():
def fn1(self):
pass
def fn2(self):
pass
def __fn3(self):
pass
的self
部分__fn3
只是将方法“绑定”到类。您不需要在方法的主体中使用它。
根据复杂fn3
程度,另一种解决方案是创建一个 lambda 并将其传递给其他函数:
__fn3 = lambda self: print("New private bound")
class A():
def fn1(self, myfunc):
pass
def fn2(self, myfunc):
pass
a = A()
a.fn1(__fn3)
推荐阅读
- svg - 如何将svg图片显示为光标
- api - TypeORM - 获取提供的 id 的对象,这是一个关系
- python - 我如何删除
从输出 - python - Apache - 部署 Django 应用程序时出现错误 403 Forbidden
- php - 没有 Symfony 的带有树枝的问题闪烁消息
- html - 没有内容的 Flex 包装不会拉伸到 100% 的身体高度
- vba - Word VBA 问题打印到 PDF
- gatsby - 有没有办法避免在 Gatsby 中使用某些路径构建页面?
- docker - 在不停止整个容器的情况下停止在 docker 容器内运行的服务
- javascript - 我如何在 firestore 字段的数组字段中循环并检索最后一个对其具有真实价值的结果?