公开成员或在Python中将它们设为私有?

dea*_*mon 2 python oop visibility

是否有关于在Python类中公开成员的一般约定?我知道这是"它取决于"的情况,但也许有一个经验法则.

私人会员:

class Node:

  def __init__(self):
    self.__children = []

  def add_children(self, *args):
    self.__children += args

node = Node()
node.add_children("one", "two")
Run Code Online (Sandbox Code Playgroud)

公共成员:

class Node2:

  def __init__(self):
    self.children = []

node2 = Node2()
node2.children += "one", "two"
Run Code Online (Sandbox Code Playgroud)

如果没有充分理由children私有,你会继续使用这种方法add_children吗?

Bas*_*ard 5

"private"的前缀是单个下划线. __用于破坏名称并避免一些问题,例如使用多重继承时.我个人从来没用过它.

在任何情况下,成员仍然可以公开访问; 这只是一个惯例.