簡體   English   中英

適用於公共用途的Python私有方法

[英]Python private method for public usage

我有一個類A,需要實現一個方法meth()。 現在,我不希望包的最終用戶調用此方法。 因此,我必須將此方法設為私有(即_meth()。我知道它不是真正的私有,但是約定很重要)。

但是問題是我的程序包中還有另一個類B,必須調用該方法_meth()。 問題是我現在得到警告方法,說B試圖訪問類的受保護方法。 因此,我必須公開該方法,即不使用下划線。 這與我的意圖背道而馳。

解決這一難題的最有效方法是什么?


  • 我知道我可以在A之外重新實現該方法,但是它將導致代碼重復,並且由於meth()使用A的私有屬性,將導致相同的問題。

  • 從單個元類繼承不是一個選擇,因為那些類具有完全不同的用途,這將導致可怕的混亂。

pylint /您的編輯器/任何外部工具都會向您發出警告,這一事實並不妨礙代碼執行。 我不知道您的編輯器是什么,但是可以使用特殊注釋逐個禁用 pylint警告(nb:“逐個案例”,意思是:“不要針對行或塊警告我”,而不是“完全警告我”)禁用此警告”)。

而且您自己的代碼可以在同一程序包中訪問受保護的屬性和方法是完全可以的 -“ _protected”命名約定並不意味着“任何人都不能通過”,只是“您確定自己了解自己在做什么並且願意接受嗎?如果您破壞某些東西的責任?”。 由於您是軟件包的作者/維護者,並且它們是軟件包內的訪問權限,因此您顯然有權承擔此責任;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM