Python 公共和私有方法

我正在尝试将 Python 类中的公共参数更改为私有参数。据我所知,要使其私有,我需要声明例如:


self.__top = None # <-- 代替 self.top = None


但是,我无法弄清楚如何使用私有属性创建私有结构,以便在公共方法中正确调用它们。


例如:


class Stack:


    def __init__(self, size=None):

        self.__top = None

        if size is None:  # if size is unset

            self.__size = -1

        else:

            self.__size = size

        self.__current_size = -1


    def push(self, data):

        if self.current_size >= self.size: # ERROR!

            print("Stack Overflow!")

            return


慕斯王
浏览 181回答 1
1回答

狐的传说

我假设,通过使用诸如struct,public而private你一定是从的背景C/C++。Python中没有这样的东西,属性的命名纯粹是约定俗成的。我建议阅读对象名称前的单下划线和双下划线的含义是什么?.通常对于您不希望其他人在您的课程之外使用的“私有”属性,约定是在它前面加上一个下划线,_例如_size.&nbsp;如果你打算在外面使用它,归结为这些情况:你希望它可以从外部写入吗?在这种情况下,您只需将其定义为size并在任何地方使用它你想让它从外部只读吗?在这种情况下,您可以将其设为私有并为其创建一个属性,例如:代码:class A:&nbsp; &nbsp; self __init__(self, size):&nbsp; &nbsp; &nbsp; &nbsp; self._size = size&nbsp; &nbsp; @property&nbsp; &nbsp; def size(self):&nbsp; &nbsp; &nbsp; &nbsp; return self._size您还可以将内部变量转换为另一个名称,并同时使用该不同名称使其可写。例子:class A:&nbsp; &nbsp; def __init__(self, value):&nbsp; &nbsp; &nbsp; &nbsp; self._internal_var = value&nbsp; &nbsp; def set_data(self, value):&nbsp; &nbsp; &nbsp; &nbsp; self._internal_var = value&nbsp; &nbsp; def get_data(self):&nbsp; &nbsp; &nbsp; &nbsp; return self._internal_var&nbsp; &nbsp; data = property(get_data, set_data)或者:@propertydef data(self):&nbsp; &nbsp; return self._internal_var@data.setterdef data(self, value):&nbsp; &nbsp; self._internal_var = value然后如果你打电话:a1 = A(11)print(a1.data)a1.data = 22print(a1.data)将产生:1122
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python