简介:今天,首席执行官指出要与您分享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类别相关内容的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?