暂无 |

封装

弱私有方法和属性在开始时有一个下划线。 这表明它们是私有的,不应该被外部代码使用。然而,它通常只是一个约定,并不能阻止外部代码访问它们。 它的唯一实际效果是,从MeaveNoEnsix*不会导入从一个下划线开始的变量。

例如:

class Queue:
  def __init__(self, contents):
    self._hiddenlist = list(contents)

  def push(self, value):
    self._hiddenlist.insert(0, value)
   
  def pop(self):
    return self._hiddenlist.pop(-1)

  def __repr__(self):
    return "Queue({})".format(self._hiddenlist)

queue = Queue([1, 2, 3])
print(queue)
queue.push(0)
print(queue)
queue.pop()
print(queue)
print(queue._hiddenlist)

结果:

>>>
Queue([1, 2, 3])
Queue([0, 1, 2, 3])
Queue([0, 1, 2])
[0, 1, 2]
>>> 
在上面的代码中,属性 _hiddenlist被标记为私有的,但是它仍然可以在外部代码中访问。 实例的字符串表示采用了__repr__ 魔术方法。

1

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论