python公有属性和私有属性,python 类 私有属性,私有方法

  python公有属性和私有属性,python 类 私有属性,私有方法

  本文主要介绍了python类的私有属性和公共属性的描述,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  00-1010 python私有属性和Python类公共属性的定义

  

目录

  对于python来说,类属性只有两种可见性,public和private。

  类的私有属性前面有“_ _”标识符,而公共属性不是必需的。

  访问类外部的私有属性会引发异常。

  基本类别:

  def __init__(self,value):

  自我。__value=值

  b=基数(5)

  打印(断言b. _ _值)

  回溯(最近呼叫):

  文件/Users/yangjia Jia/Desktop/project/python/algebra/test . py ,模块中的第19行

  打印(b. _ _值)

  attribute error :“Base”对象没有属性“__value”

  财产被私有化,即使继承了其词类,也无法访问。

  类别Parent:

  def __init__(self,value):

  自我。__value=值

  类别子级(父级):

  定义获取值(自身):

  回归自我。_ _值

  孩子=孩子(4)

  print(child.get_value())

  回溯(最近呼叫):

  文件/Users/yangjia Jia/Desktop/project/python/algebra/test . py ,模块中的第24行

  print(child.get_value())

  文件/Users/yangjia Jia/Desktop/project/python/algebra/test . py ,第21行,在get_value中

  回归自我。_ _值

  AttributeError:“子”对象没有属性“_Child__value”

  为什么会这样?因为python会对类的私有属性进行转换,以保证私有字段的私密性。当编译器看到Child.get_value方法要访问私有属性时,会先把__value转换成_Child_value再访问,但实际上私有属性是_Parent__value。一个类不能访问其父类的私有属性,仅仅因为被访问的名称不同。

  查询对象的属性字典。

  类别Parent:

  def __init__(self,value):

  自我。__value=值

  类别子级(父级):

  定义名称(自身):

  姓名=杨

  定义获取值(自身):

  回归自我。_ _值

  孩子=孩子(4)

  打印(子。__字典_ _)

  {_Parent__value: 4}

  python开发的原则是少用私有属性。如果需要确保属性不重复,可以在它们前面加一个下划线。

  类别Parent:

  def __init__(self,value):

  自我。_value=值

  类别子级(父级):

  定义获取值(自身):

  回归自我。_值

  孩子=孩子(4)

  断言子级。_value==4

  

python类私有属性和公共属性

  当变量或方法在Java中被private限制时,方法只在整个类内部可见,而在外部不可见且不可访问。

  python中也有私有属性定义,由函数名前缀的两个下划线定义。

  例如_ _参数

  接下来,我们来看看狗的例子。

  类别狗(对象):

  __slots__=(__name , kind , level )

  DEF _ _ init _ _ (self,name,kind,level) 3360 #构造函数,定义属性和初始方法

  自我。__name=name

  善良=善良

  Self.level=级别#分配

  print(f 这是一只{self.kind}狗,叫{self。级别为{self.level} )的__name}

  定义一个类中的方法

  打印(f{self。“__name}现在正在运行!”)

  def roll_over(self):

  打印(f{self。“__name}现在正在滚动!”)

  定义变更_级别(自身):

  Self.level=1#修改类中属性的值

  打印{自我}的级别。__name}现在是{self.level} )

  在另一个文件中调用

  动物园的。狗进口狗#指南包

  Dog=Dog(Halo , Husty ,3)#实例化

  dog.run()

  dog.roll_over()

  Dog.change_level()#调用方法

  当我们发现我们输入以下内容时,我们会报错并非法访问。

  打印(狗。_ _名称)

  在此示例中,__name是对名称的私有限制。

  以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: