当前位置:   article > 正文

python私有方法和私有属性_. 填空题 python可以通过在类成员名称之前添加____的方式将公有成员改为私有成员。

. 填空题 python可以通过在类成员名称之前添加____的方式将公有成员改为私有成员。

 

Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了

声明该方法为私有方法,不能在类的外部调用

代码

  1. class Test(object):
  2.     #普通方法
  3.     def test(self):
  4.         print("普通方法test")
  5.     #普通方法
  6.     def _test1(self):
  7.         print("普通方法_test1方法")
  8.     #私有方法
  9.     def __test2(self):
  10.         print("私有方法__test2方法")
  11. t = Test()
  12. t.test()
  13. t._test1()
  14. #t.__test2()#调用的时候会报错

执行效果

 

外界无法访问私有方法,但可以在类内部方法私有方法。

  1. class Test(object):
  2.     #私有方法
  3.     def __test2(self):
  4.         print("私有方法__test2方法")
  5.     #普通方法
  6.     def test(self):
  7.         print("普通方法test")
  8.     #普通方法
  9.     def _test1(self):
  10.         print("普通方法_test1方法")
  11.         #可以在类内部调用私有方法
  12.         t.__test2()#
  13.         self.__test2()
  14. t = Test()
  15. t.test()
  16. t._test1()
  17. #t.__test2()和t.test2()#调用的时候会报错

  私有方法应用场景

 

执行效果

私有属性

如果有一个对象,当需要对其进行修改属性时,有2种方法

对象名.属性名 = 数据 ---->直接修改

对象名.方法名() ---->间接修改

为了更好的保存属性安全,即不能随意修改,一般的处理方式为

将属性定义为私有属性

添加一个可以调用的方法,供调用

案例

  1. class Person(object):
  2.     def __init__(self, name):
  3.         self.__name = name
  4.     def get_name(self):
  5.         return self.__name
  6.     def set_name(self, new_name):
  7.         if len(new_name) >= 5:
  8.             self.__name = new_name
  9.         else:
  10.             print("error:名字长度需要大于或者等于5")
  11. xiaoming = Person("skyter")
  12. print(xiaoming.get_name())
  13. #print(xiaoming.__name)#会报错

  1. class Person(object):
  2.     def __init__(self, name):
  3.         self.__name = name
  4.     def get_name(self):
  5.         return self.__name
  6.     def set_name(self, new_name):
  7.         if len(new_name) >= 5:
  8.             self.__name = new_name
  9.         else:
  10.             print("error:名字长度需要大于或者等于5")
  11. p = Person("skyter")
  12. p.set_name("wanger")
  13. print(p.get_name())
  14. p.set_name("lisi")
  15. print(p.get_name())

执行如图:

 总结

Python中没有像C++中public和private这些关键字来区别公有属性和私有属性

它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/215251
推荐阅读
相关标签
  

闽ICP备14008679号