我有以下代码:
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
答案 0 :(得分:0)
似乎您只是想绕开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
输入,但是您应该对原始实现有所了解,因为您可能会无意中覆盖了超类{ {1}}。
在此用例中,xc.Server
基本上是AristaSwitch
,具有自定义的实例化方法,以后可以根据需要使用自己的方法对其进行补充。