如何訪問python類中的私有方法


在python中,不像c#/java類語言,支持類的私有方法,這點有點像objc,雖然objc可以通過擴展extension來實現,但源於objc的運行時特性,我們還是可以通過非常手段來進行訪問的。不過這點說白了,好像c#中也可以通過指定BindingFlags.NonPublic的方式結合反射來調用。

假設有如下一個python類:

1 class Securityp(object):
2     def __inaccessible(self):
3         print "Bet you can't see me..."

而s是Securityp的一個實例,我們

1 s.__inaccessible()

的情況下是會報錯的,通過在一個方法前面加上兩個下划線的方法來讓一個方法成為私有方法。


那我們應該怎么來訪問這個所謂的私有方法呢,

1 s._Securityp__inaccessible()

上述代碼就可以讓我來訪問了。這是因為,在python的解析器中,所有以雙下划線開頭的方法都會被翻譯成前面加上單下划線和類名的形式。

這樣我們就可以訪問類中私有方法了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM