从另一个类访问内部属性

时间:2016-04-02 15:20:08

标签: python

如果我有以下两个类:

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?

如果我想在self._path={}类的PrintNodes()中循环键,我是否需要在Test()中以与Java或C ++类似的方式创建一个getter方法?如果不是,有人可以建议我这样做吗?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

如果希望PrintNodes能够访问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属性标记为私有没有任何好处,除非它具有与之相关的特性。 #39;对其他班级来说很危险。所以你的代码看起来像这样:

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

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

如果依赖路径是危险的 - 例如,您可能会在将来将其从dict更改为list - 然后使用前导下划线将其标记为私有并禁止访问它在其他课程中。