在传统的面向对象语言,比如Java,是完全面向对象编程的。这类语言,通常类里面的属性有三种类型,public、private、protected。
public - 公开类型,实例可以正常访问。private - 私有类型,只能在类内部使用,实例不能正常访问。protected - 保护类型,类内部使用 + 继承了类的子类内部里面使用,实例不能正常访问。Python 类的所有的属性类型,都是公开类型,或者说有一些伪私有。
公开属性,在前两篇有过演示,我们复习一下。
class Attr():
def __init__(self):
self.args = 'public' # 公开属性
>>> Attr().args
'public'
私有属性
class Attr():
def __init__(self):
self.__args = 'private' # 在属性面前加 __ 就是私有属性
>>> Attr().__args
"AttributeError: 'Attr' object has no attribute '__args" # 报错,不能直接访问
>>> Attr()._Attr__args # 但是私有属性,我们能通过这种方式访问,所有就有点 "伪私有"
'private'
Python的属性中,存在着一些特殊属性_agrs、__agrs、__agrs__,虽然这些属性我们还是有办法访问到,但是通常我们都约定俗成的,不对其进行直接操作。