首页 > 其他 > 详细

内建属性

时间:2019-05-23 23:13:23      阅读:156      评论:0      收藏:0      [点我收藏+]

常用的专有属性:

__init__构造初始化函数

__new__生成实例所需属性

__class__实例所在的类

__str___实例字符串表示,可读性

__repr__实例字符串表示,准确性

__del__析构

__dict__实例自定义属性

__doc__类文档,子类不继承

__getattribute__属性访问拦截器,在__getattribute__方法中禁止使用self.xxx(方法和属性)

__basses__类的所有父类构成元素

 

__getattribute__的使用方法:

 1 class Itcast(object):
 2     def __init__(self,subject1):
 3         self.subject1 = subject1
 4         self.subject2 = cpp
 5     #属性访问时拦截器,打log
 6     def __getattribute__(self,obj):
 7         print("====1>%s"%obj)
 8         if obj == "subject1":
 9             print("log subject1")
10             return redirect python"
11         else:#注释掉这2行,将找不到subject2
12              temp = object.__getattribute__(self,obj)
13              print("====2>%s"%str(temp))
14              return temp
15     def show (self):
16         print(this is Itcast)
17 s = Itcast("python")
18 print(s.subject1)
19 print(s.subject2)
20 s.show()
21 #先获取show属性对应的结果,,,,应该是一个方法
22 #方法()
 
 1 class Person(object):
 2     def __getattribute__(self,obj):
 3         print("...test...")
 4         if obj.startswith("a"):
 5             return "hahha"
 6         else:
 7             return self.test
 8     def test(self):
 9         print("heihei ")
10         
11 t = Person()
12 t.a
13 t.b#是一个坑,程序将一直执行__getattribute__访问一个对象的属性,一定先执行__getattribute__这个方法

 

内建属性

原文:https://www.cnblogs.com/daxinzhe/p/10915228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!