Инициализация объекта с использованием другого объекта в Python - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть следующий код:

import xmlrpc.client as xc
class AristaSwitch():
    def __init__(self,devicename,user='admin',password='xxxxxx')
        self.url="https://"+user+":"+password+"@"+devicename+"/command-api"
        self.Server = xc.Server(self.url)     **<----i know this is not correct** 
    more code below here

Я бы хотел написать свой код, как показано ниже:

as = AristaSwitch("192.168.1.1")
as.runCmds(1, [ "show hostname" ] )

То, как они это делают:

import xmlrpc.client as xc
switch = xc.Server( "https://admin:admin@172.16.130.16/command-api" ) 
response = switch.runCmds( 1, [ "show hostname" ] ) 

Обновление Я думаю, что добавление этого в функцию init должно сделать это

    self.InitializeRPCServer()
def InitializeRPCServer():
    switch=xc.Server(self.url)
    return switch

1 Ответ

0 голосов
/ 26 ноября 2018

Кажется, вы просто пытаетесь обернуть xc.Server.Просто используйте функцию вместо класса.

import xmlrpc.client as xc
def AristaSwitch(devicename, user='admin', password='xxxxxx'):
    url="https://"+user+":"+password+"@"+devicename+"/command-api"
    Server = xc.Server(url)
    return Server

Тогда просто сделайте свое дело:

as = AristaSwitch("192.168.1.1")
as.runCmds(1, [ "show hostname" ] )

Если вы говорите о настройке объекта xc.Server, выВы можете просто унаследовать его:

class AristaSwitch(xc.Server):
    def __init__(self, devicename, user='admin', password='xxxxxx'):
        self.url="https://"+user+":"+password+"@"+devicename+"/command-api"
        super().__init__(self.url)

Вам нужно обновить def __init__ до своего настроенного url ввода, но вы должны быть достаточно подкованы в исходной реализации, так как вы можете случайно перезаписать некоторые атрибуты илидетали реализации из суперкласса xc.Server.

В этом случае использования AristaSwitch в основном xc.Server с настроенным методом создания экземпляров, и вы можете дополнить его своими собственными методами позже, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...