本文共 1399 字,大约阅读时间需要 4 分钟。
用法:
hasattr(obj, name, /) 返回obj中是否存在name属性,存在返回True,反之返回否; 这是通过调用getattr(obj,name)并捕获AttributeError来完成的 实例演示:#!/usr/bin/python# -*- coding: UTF-8 -*-class X(object): y = 10 def func1(self, num): print("input num=%s" % num)x = X()print(hasattr(x, 'y')) #存在返回Trueprint(hasattr(X, 'func2')) #不存在返回False
用法:
getattr(object, name[, default]) -> value获取对象已命名的属性;
getattr(x, ‘y’)相当于x.y; default值可选,当对象的属性不存在时返回默认值。 实例演示:#!/usr/bin/python# -*- coding: UTF-8 -*-class X(object): y = 10 def func1(self, num): print("input num=%s" % num)x = X()print(x.y)print(getattr(x,'y'))print(getattr(x,'z', 1))getattr(x, 'func1')(69) #相当于x.func1(69)getattr(x,'z') #属性z不存在且没有定义缺省值,触发AttributeError
setattr(obj, name, value, /)
用法: 设置obj中的name为value,name若不存在则新增name属性。 setattr(x, ‘y’, v) 相当于x.y = v 实例演示:#!/usr/bin/python# -*- coding: UTF-8 -*-class X(object): y = 10x = X()setattr(X, 'y', 20)print(X.y) #20print(x.y) #20setattr(x, 'y', 25)print(X.y) #20print(x.y) #25
用法:
delattr(obj, name, /) 删除obj中的name属性 delattr(x, ‘y’) 相当于del x.y 实例演示:#!/usr/bin/python# -*- coding: UTF-8 -*-class X(object): y = 10 z = 15x = X()delattr(X, 'y')print(hasattr(x, 'y')) # Falsedelattr(x, 'z') #触发AttributeError: 'X' object attribute 'z' is read-only
转载地址:http://wyiti.baihongyu.com/