首页 > 解决方案 > 我如何声明一个仅由同一类的另一个函数使用的python类函数?

问题描述

假设我有以下课程:

class A():
    def fn1(self):
        pass
    def fn2(self):
        pass

现在我想fn3fn1and中调用函数fn2。该函数fn3应该是只有fn1并且fn2应该能够调用它的方式(因为只有orfn3才需要)。fn1fn2

我的方法是,

class A():
    def fn3(self):
        pass
    def fn1(self):
        fn3()
        pass
    def fn2(self):
        fn3()
        pass

fn3在这里,我看到了应该有论据的缺点self(在我的情况下fn3没有利用它)。另一个缺点是fn3可以被在类之外声明的其他对象调用,这不是必需的。

标签: pythonclassoop

解决方案


你会在 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)

推荐阅读