Добавление методов в sudsobject. Исправление обезьяны или импорт в новый объект?
Я пишу некоторый код на Python, который использует suds для подключения к устройству, получения wsdl и запроса некоторой информации об устройстве. Эта часть кода работает, и похоже, что suds создает и размещает данные в этом объекте. Я хотел бы добавить к объекту метод printData, который будет распечатывать только те атрибуты, которые мне нужны, в определенном порядке и формате. Я могу импортировать данные в объект, который я явно объявляю, или написать функцию, а не объект, но я стремлюсь сохранить их в объекте, поэтому другой код не должен знать о деталях, поэтому более портативный.
Есть и другие объекты, поэтому я действительно хочу просто сказать.print и заставить его делать правильные вещи (tm), и любой, кто использует модуль, не должен знать или понимать внутренности.
Теперь я не вижу, как попасть в класс sudsobject, чтобы добавить метод. Обезьяна исправляет путь, и если да, то есть ли идея, как попасть в класс sudsobject, чтобы я мог добавить метод или два?
>>> 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'
1 ответ
Создайте подкласс объекта следующим образом:
class Subclass(parentClass):
def newMethod(self):
print self.someVariableDefinedInTheParentClass
Вот рабочий пример:
class apple:
def __init__(self):
self.color = 'red'
class betterClass(apple):
def printColor(self):
print self.color
a = betterClass()
a.printColor()