python 类中public,protected,private定义方式
在Python中可以通过在变量属性以及方法属性是否有下划线“_”进行区分public、protected、private类型。public类型在python中数据和方法默认都是pubic类型的,此时方法和变量名都没有下划线。1、 xx 没有以下划线开头的变量或者方法是public类型。2、public类型可以被子类、类内以及类外被访问。protected类型1、 _xx 以单下划线开头...
在Python中可以通过在变量属性以及方法属性是否有下划线“_”进行区分public、protected、private类型。
public类型
在python中数据和方法默认都是pubic类型的,此时方法和变量名都没有下划线。
1、 xx 没有以下划线开头的变量或者方法是public类型。
2、public类型可以被子类、类内以及类外被访问。
protected类型
1、 _xx 以单下划线开头表示的是protected类型的变量或者方法。
2、保护类型只能允许其本身与子类进行访问。
private类型
1、 __xx 双下划线表示的是私有类型的变量或者方法。
2、private类型只能允许类内进行访问。
特列方法
1、 __xx__定义的是特列方法。用户控制的命名空间内的变量或是属性,只有当文档有说明时使用,不要自己定义这类变量。 (就是说这些是python内部定义的变量名)
需要特殊说明的是,在python中没有像其他类似语言的public,private等关键字修饰。同时若方法或者变量是private类型时,其方法或者变量实际上是被转换了,转换规则是 在变量的前端插入类名,再类名前添加一个下划线"_",形成"_ClassName__变量名".
如果我们使用转换后的变量或者方法,我们仍然可以进行访问,即python没有严格意义上的private类型。
class ClassDef(object):
def __init__(self):
# public
self.name = "class_def"
# private
self.__age = 29
# protected
self._sex = "man"
def fun1(self):
print("call public function")
def __fun2(self):
print("call private function")
def _fun3(self):
print("call protected function")
if __name__ == "__main__":
# 实例化类对象
class_def = ClassDef()
# 调用方法
# ok
class_def.fun1()
class_def._ClassDef__fun2()
class_def._fun3()
# 访问数据
print(class_def._ClassDef__age)
print(class_def._sex)
print(class_def.name)
# error
# class_def.__fun2()
# print(class_def.__age)
输出结果:
call public function
call private function
call protected function
29
man
class_def
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)