2016-04-02 28 views
0

から内部属性へのアクセス:は別のクラス

class Test() 
    def __init__(self): 
     self._path={} # key= source node, value = list of neighbors 

class PrintNodes() 
    def printing(self) 
     Test()._path[key] # Is it possible? 

を私はPrintNodes()クラスからself._path={}のキーをループにしたい場合は、私がでTest()でgetterメソッドを作成する必要がありますJavaやC++と同様の方法ですか?いいえ、誰かが私にそうする方法を提案することができますか?

ありがとうございます。

+1

コードを試しましたか? – syntonym

+0

実際には、私はアイデアを得ようとしています。今すぐやります。ありがとうございます –

+0

あなたのコードは動作するはずです。 – John

答えて

0

TestNodesがTestインスタンスの属性にアクセスできるようにするには、TestインスタンスをPrintNodesインスタンスに渡す必要があります。例えば

:それは他のクラスが依存するのは危険だ何かない限り

class Test() 
    def __init__(self): 
     self._path={} 

Class PrintNodes() 
    def printing(self, test) # pass in the instance here 
     print(test._path[key]) 

PythonはC++やJavaのような強力なアクセス保護機構を持っていないので、プライベートなどのテストの_path属性をマーク何のメリットがありません。だからあなたのコードは次のようになります。

class Test() 
    def __init__(self): 
     self.path={} # not private 

Class PrintNodes() 
    def printing(self, test) 
     print(test.path[key]) 

パスに依存するのは危険である場合 - たとえば、あなたが将来的にlistdictからそれを変えるかもしれない - そして、先頭にアンダースコアを使用して、プライベートとしてマークし、他のクラスではアクセスしないでください。

+0

素晴らしい!ありがとうございました:) –

+0

私は彼が抽象クラスについて何か質問していると思いました。抽象メソッドを呼び出すように –

関連する問題