私は、デバイスに接続するためにsudsを使用するいくつかのPythonコードを書いて、wsdlを取得して、デバイス情報を照会します。そのコードの一部が動作し、sudsの作成とオブジェクトのように見え、そのオブジェクトにデータを配置します。私は、特定の順序と形式で、私が望む属性だけを印刷する、オブジェクトprintDataにメソッドを追加したいと思います。私は、明示的に宣言するオブジェクト、またはオブジェクトではなく関数を書き込むオブジェクトにデータをインポートすることができますが、オブジェクト内に保持することを検討しているので、他のコードでは詳細を知る必要はありませんよりポータブル。メソッドをスーパーオブジェクトに追加します。猿のパッチや新しいオブジェクトへのインポート?
他のオブジェクトもあるので、私は本当に.printと言うことができ、正しいこと(tm)を行い、モジュールを使用する他の誰もが内部を理解したり理解したりする必要はありません。
ここでは、メソッドを追加するためにsudsobjectクラスを取得することはできません。猿のパッチを当てる方法はありますか?そしてもしそうなら、どのようにsudsobjectクラスを取得するのか、私はメソッドを2つ追加することができますか?
>>> response = client.service.exportDevice(context)
>>> a=response[0]
>>> type(a)
<type 'instance'>
>>> dir(a)
['MACAddress', '__contains__', '__delattr__', '__doc__', '__getitem__', '__init__', '__iter__', '__keylist__', '__len__', '__metadata__', '__module__', '__printer__', '__repr__', '__setattr__', '__setitem__', '__str__', '__unicode__', 'addressType', 'aliases', 'container', 'description', 'deviceType', 'domainName', 'domainType', 'dupWarning', 'excludeFromDiscovery', 'hostname', 'hwType', 'id', 'ipAddress', 'resourceRecordFlag', 'userDefinedFields']
>>> a.__class__
<class suds.sudsobject.WSDevice at 0x101323940>
>>> b=suds.sudsobject.WSDevice()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'WSDevice'
はそれを考え出したが、それは私が7のためにそれに答えることはできません時間。 –
私はそれが次のコードで動作し得ることができた: >>> defをPR(自己): ...印刷self.addressType ...印刷self.ipAddress ... >>>。 __class__.pr = PR >>> a.pr() 静的 10.30.0.2 >>> B =応答[1] >>> b.pr() 静的10.30.0.3 –