getattribute为python内建属性,其作用为,当类中属性被访问时,会自动调用__getattribute__方法。常用于查看权限、打印log日志等。
例1:
输出结果:
当去访问name属性时,不会直接打印,而会自动调用__getattribute__方法,把self.name的属性传给__getattribute__中,进过一些列操作后输出“---自动调用---”,由于此时没有任何return,所以此时返回一个None。
例2:
输出结果:
此时访问name属性,自动调用__getattribute__方法,并且由形参item接收了self.name的值,程序会打印"---自动调用---"并且通return返回item,则输出结果中出现了“老王”
常用案例:
例3:
class TestGetattribute(object): def __init__(self,temp_name): self.name = temp_name self.age = 18 def __getattribute__(self, *args,**kwargs): if args[0] == "name": return "不让访问name属性" elif args[0] == "age": print("访问属性成功") return object.__getattribute__(self,*args,**kwargs) code1 = TestGetattribute("test") print(code1.name) print("----------------") print(code1.age)
输出结果:
不让访问name属性 ---------------- 访问属性成功 18
当访问其中的name属性时,自动调用__getattribute__方法,判读访问的属性是否允许访问,并返回不同的值。