ホームページ >バックエンド開発 >Python チュートリアル >Python の getattr()、setattr()、delattr()、hasattr() の簡単な分析
getattr() 関数 は Python イントロスペクションのコア関数です。具体的な使用法はおおよそ次のとおりです。
Getattr はオブジェクト属性またはメソッドを返すために使用されます
class A: def __init__(self): self.name = 'zhangjing' #self.age='' def method(self): print"method print" Instance = A() print getattr(Instance , 'name, 'not find') #如果Instance 对象中有属性name则打印self.name的值,否则打印'not find' print getattr(Instance , 'age', 'not find') #如果Instance 对象中有属性age则打印self.age的值,否则打印'not find' print getattr(a, 'method', 'default') #如果有方法method,否则打印其地址,否则打印default print getattr(a, 'method', 'default')() #如果有方法method,运行函数并打印None否则打印default
注: ファクトリー モードは getattr を使用して簡単に実装できます。
import statsout def output(data, format="text"): output_function = getattr(statsout, "output_%s" % format) return output_function(data) setattr(object, name, value) This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. The string may name an existing attribute or a new attribute. The function assigns the value to the attribute, provided the object allows it. For example, setattr(x, 'foobar', 123) is equivalent to x.foobar = 123.これは、対応する getattr() です。パラメータはオブジェクト、文字列、および任意の値です。文字列には、既存のプロパティまたは新しいプロパティがリストされる場合があります。この関数は、属性に値を割り当てます。オブジェクトによって提供が可能になります。たとえば、setattr(x,"foobar",123) は x.foobar = 123 と同等です。
delattr(オブジェクト, 名前)
オブジェクトと文字列。文字列はオブジェクトの
のいずれかの名前である必要があります。
オブジェクトが
を許可している場合、この関数は指定された属性を削除します。
たとえば、delattr(x, 'foobar') は
です。
del x.foobar.
と同等
•hasattr は、オブジェクトが特定の属性を持っているかどうかを判断するために使用されます。
構文:hasattr(オブジェクト, 名前) -> bool
オブジェクトに name 属性があるかどうかを判断し、ブール値を返します。
>>> li=["zhangjing","zhangwei"] >>> getattr(li,"pop") <built-in method pop of list object at 0x011DF6C0> >>> li.pop <built-in method pop of list object at 0x011DF6C0> >>> li.pop() 'zhangwei' >>> getattr(li,"pop")() 'zhangjing' >>>getattr(li, "append")("Moe")