在传统的面向对象语言,比如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__
,虽然这些属性我们还是有办法访问到,但是通常我们都约定俗成的,不对其进行直接操作。