2014-03-19 90 views
1

在.../CthuluPackage 在CthuluCore.py,我有:靜態方法屬性錯誤在Python

class Dice(object): 
    @staticmethod 
    def __RollSkillMenu(): 
     bonus=int(input("Bonus>")) 
     penalty=int(input("Penalty>")) 
     return Dice.RollSkill(bonus-penalty) 

在CthuluSkills.py,我有

from CthuluPackage.CthuluCore import * 
import inspect 
class SkillCheckResult(object): 
    def __init__(self,targetSkill): 
     self.TargetSkill=targetSkill 
     print(Dice) 
     self.Roll=Dice.__RollSkillMenu() 

當我試圖創建SkillCheckResult,我得到的消息:

​​

這真的讓我困惑,因爲據我所知我不是試圖調用任何名爲骰子。 SkillCheckResult _RollSkillMenu,我只是想撥打Dice.RollSkillMenu。爲什麼python會將此前綴添加到我的方法調用中?

+0

你真的寫了'Dice .__ RollSkillMenu()'嗎? – user2357112

+0

我可能有,是的。我只是想找到一種方法來編輯這篇文章 – Benjamin

回答

0

出現在以兩個下劃線開頭並且不以下劃線結尾的類體內的任何名字都會自動獲得_TheNameOfTheClass前綴。如此命名的方法或屬性應該是類內部的;如果您想從子類或其他外部代碼訪問它們,則必須手動添加_TheNameOfTheClass前綴。

看起來__RollSkillMenu不應該在Dice類的內部。如果是這樣,那麼不要以兩個下劃線開始名稱。只需使用一個,或者如果它應該是公共接口的一部分,則根本不使用任何下劃線。

相關問題