ホームページ  >  記事  >  バックエンド開発  >  Python の getattr()、setattr()、delattr()、hasattr() の簡単な分析

Python の getattr()、setattr()、delattr()、hasattr() の簡単な分析

WBOY
WBOYオリジナル
2016-06-16 08:47:491132ブラウズ

getattr() 関数 は Python イントロスペクションのコア関数です。具体的な使用法はおおよそ次のとおりです。

オブジェクト参照 getattr を取得します

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 を使用して簡単に実装できます。

例: モジュールは、HTML、テキスト、XML、およびその他の形式での印刷をサポートしています。渡されたさまざまな形式パラメータに従って、さまざまな関数が呼び出され、いくつかの形式で出力されます。


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(オブジェクト, 名前)

これは setattr() の相対です。引数は次のとおりです。

オブジェクトと文字列。文字列はオブジェクトの
のいずれかの名前である必要があります。 オブジェクトが
を許可している場合、この関数は指定された属性を削除します。 たとえば、delattr(x, 'foobar') は
です。 del x.foobar.
と同等

setattr() に関連する一連の関数。パラメータはオブジェクト (Python ではすべてがオブジェクトであることを思い出してください) と文字列で構成されます。文字列パラメータは、オブジェクト プロパティ名のいずれかである必要があります。この関数は、文字列で指定された属性をオブジェクトから削除します。 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") 

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。