为什么Python的“私有”方法实际上不是私有的?
__myPrivateMethod()
>>> class MyClass:... def myPublicMethod(self):... print 'public method'... def __myPrivateMethod(self):... print 'this is private!!'... >>> obj = MyClass()>>> obj.myPublicMethod()public method >>> obj.__myPrivateMethod()Traceback (most recent call last): File "", line 1, in AttributeError: MyClass instance has no attribute '__myPrivateMethod'>>> dir(obj)['_MyClass__myPrivateMethod', '_ _doc__', '__module__', 'myPublicMethod']>>> obj._MyClass__myPrivateMethod()this is private!!
>>> class MyClass:... def myPublicMethod(self):... print 'public method'... def __myPrivateMethod(self):... print 'this is private!!'... >>> obj = MyClass()
>>> obj.myPublicMethod()public method
>>> obj.__myPrivateMethod()Traceback (most recent call last): File "", line 1, in AttributeError: MyClass instance has no attribute '__myPrivateMethod'
>>> dir(obj)['_MyClass__myPrivateMethod', '__doc__', '__module__', 'myPublicMethod']
>>> obj._MyClass__myPrivateMethod()this is private!!
森栏
qq_笑_17
肥皂起泡泡
相关分类