当前位置: 首页 > 网络应用技术

Python类中可以有多少个属性(Python获得类的所有属性)

时间:2023-03-08 10:43:24 网络应用技术

  简介:今天,首席执行官指出要与您分享Python类可用多少属性。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  1.类定义:

  班级名称:

  句子

  实例化后,它可以使用其属性。实际上,创建类后,您可以通过类名来访问其属性

  如果您使用类名称直接修改其属性,它将直接影响已实例化的对象

  班级的私人属性:

  __private_attrs从两条下行开始,以声明该属性是私人的,不能直接使用或直接访问土地类型

  当在班级的内部方法中使用时,self .__ private_attrs

  分类方法

  在土地类中,使用DEF关键字可以定义类的方法。与一般函数定义不同,类方法必须包括参数自我和第一个参数

  私人方法

  __private_method从两条下行开始。宣布该方法是一种私人方法,不能在课堂之外调用。

  呼叫SLEF .__ private_methods的内部呼叫

  班级保护方法:

  __init__构建功能,生成对象时致电

  __DEL__开发功能,使用

  __repr__打印,转换

  __setitem__是通过索引分配的

  __getItem__colin根据索引值

  __len __获得长度

  __CMP__比较操作

  __call __功能调用

  __ADD__CHIPPING计算

  __SUB__减少计算

  __MUL__乘数操作

  __div__划分操作

  __ mod__寻求其余操作

  __pow__ o o

  例子:

  [python]查看普通副本

  #类定义

  班级人:

  非常抽象,无法回答

  属性:这是类对象的属性。存储一个值值的代码可以称为类的属性

  方法:每个类的所有功能都封装为方法。一般方法中的内容是该方法的执行过程。

  示例:例如,班级代表人民

  人们的类别中会有一些属性。这些属性可能是身高,重量,名称等。

  然后方法,例如跑步,进食。

  班级人():

  def __init __(自我,名称):

  self.name =名称

  self.height = 0

  #例如,运行一次后,高度增加了1个单位

  def run():

  打印“开始运行”

  self.height+= 1

  打印“运行端”

  上面的示例是方法。名称和高度是属性

  运行的方法执行过程是,在运行后,高度添加1

  我不知道您是否这样谈论,您能理解吗?

  班级学生():

  #构造函数

  #当前对象实例的初始化

  def __init __(自我,名称,年龄,得分):

  self.name =名称

  self.age =年龄

  self.score =得分

  #isInstance函数确定对象是否是已知类型,类似于类型

  def get_name(seld):

  如果Isinstance(self.name,str):

  返回self.name

  def get_age(seld):

  如果Isinstance(self.age,int):

  返回自我

  def get_course(self):

  a = max(self.score)

  如果Isinstance(a,int):

  返回

  zm =学生('zhangming',20,[69,88,100])

  打印(zm.get_name()))

  打印(zm.get_age())

  打印(zm.get_course())

  属性访问机制

  在正常情况下,属性访问的默认行为是从对象的字典中获取,并且在未获得的搜索链时将沿着某个搜索链找到。例如,A.X的搜索链来自A .__。dict __ ['x'],然后键入(a).__ dict __ ['x'],然后开始搜索(a)类型的基类。

  如果找到链条,如果您无法获得属性,则会引发属性异常。

  1. __ getttr __方法

  当对象的属性不存在时,要调用此方法。如果您可以通过普通机制找到对象属性,则不会调用__getAttr__方法。

  A类:

  a = 1

  def __getAttr __(self,it):

  打印('__ getAttr__呼叫')

  归还物品

  t = a()

  打印(T.A)

  打印(T.B)

  #输出

  1

  __getAttr__呼叫

  b

  第二,__ getttribute__方法

  该方法将无条件地称为属性的存在。

  A类:

  a = 1

  def __ getAttribute __(self,item):

  打印('__ getAttribute__呼叫')

  提高属性

  def __getAttr __(self,it):

  打印('__ getAttr__呼叫')

  归还物品

  t = a()

  打印(T.A)

  打印(T.B)

  因此,通常,为了保留__getAttr __的角色,__ getAttribute __()方法返回父类的同名方法:

  def __ getAttribute __(self,item):

  返回对象.__ getTribute __(self,item)

  使用基类方法获得属性,以避免该方法中的无限递归。

  3. __ get__方法

  这种方法相对简单地证明它与以前的关系无关。

  如果类是在类__get __(),__set __()或__删除__()的类中定义的类。该类的对象称为描述符。

  descri类(对象):

  def __get __(self,obj,type = none):

  打印(“呼叫获取”)

  def __set __(self,obj,value):

  打印(“呼叫集”)

  A类(对象):

  x = descrip()

  a = a()

  a .__ dict __ ['x'] = 1#不会调用__get__

  A.x#致电__get__

  如果搜索的属性在描述符对象中,则该描述符将涵盖上述属性访问机制,该属性在不同的搜索链中反映在不同的搜索链中,并且由于不同的调用,该文本将略有不同:

  如果调用是对象实例(主题中的调用方法),则将a.x转换为呼叫:.__ dict __ ['x'] .__ get __(a,type(a))

  如果称为类属性,A.x将转换为:a .__ dict __ ['x'] .__获取__(无,a)

  对于其他情况,请参阅文章末尾的参考材料的文档

  第四,__ getItem__方法

  此调用也是无条件的调用,与__getAttribute __。区别在于__getItem__允许类实例允许[]操作,可以这样理解:

  __ getAttribute__适合所有人。运营商;

  __getItem__适用于所有[]运营商。

  A类(对象):

  a = 1

  def __getItem __(self,item):

  打印('__ getititem__呼叫')

  归还物品

  t = a()

  打印(t ['a'])

  打印(t ['b'])

  如果您只希望一个对象通过[]]获得对象属性,则可以简单:

  def __ getItem(self,it):

  返回对象.__ getTribute __(self,item)

  总结

  当这些方法可能同时破坏您时。

  C类(对象):

  a ='abc'

  def __getAttribute __(self,*args,** kwargs):

  打印(“ __ getAttribute __()称为”)

  返回对象.__ getAttribute __(self,*args,** kwargs)

  #Return“哈哈”

  def __getAttr __(self,name):

  打印(“ __ getAttr __()称为”)

  返回名称+“来自gettttr”

  def __get __(自我,实例,所有者):

  打印(“ __ get __()称为”,实例,所有者)

  返回自我

  def __getItem __(self,item):

  打印('__ getititem__呼叫')

  返回对象.__ getTribute __(self,item)

  def foo(self,x):

  打印(x)

  C2类(对象):

  d = c()

  如果__name__ =='__ main __':

  C = C()

  C2 = C2()

  印刷(C.A)

  印刷(C.Zzzzzzzzzzz)

  C2.D

  打印(C2.D.A)

  打印(c ['a'])

  可以与输出一起缓慢理解。简而言之,在这里没有继承关系。该名称不同,使用情况很大。只有在实践中理解它们,我们才能真正掌握它们的用法。

  班级的私人属性:

  __PRIVATE_ATTRS:两个下划线线的开头,声明该属性是私有的,不能在班级土地外使用或直接访问。

  内部方法内的self .__ private_attrs。

  类方法:

  在土地类中,使用DEF关键字可以定义类的方法。与一般函数定义不同,类方法必须包括参数自我和第一个参数

  班级私人方法:

  __private_method:两条下线的开始,声明该方法是一种私人方法,不能在土地类之外调用。

  在班级中调用self .______方法

  例子:

  #!/usr/bin/python

  # - * - 编码:UTF-8 - * -

  类JustCounter:

  __secretCount = 0#私人变量

  PublicCount = 0#打开变量

  def计数(自我):

  self .__ SecretCount += 1

  self.publiccount += 1

  打印自我.__ SecretCount

  Counter = JustCounter()

  counter.count()

  counter.count()

  打印柜台

  打印计数器.__ SecretCount#要报告错误,该实例无法访问私有变量

  Python不允许实例化类访问私有数据,但是您可以使用object._classname__attrname访问属性,并替换以下代码的以下代码以下代码:以下代码:

  …………………………。

  打印counter._justcounter__secretCount

  这可以访问私人属性

  结论:以上是首席CTO注释为每个人编制的Python类别相关内容的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?