我目前正在编写一个简单的脚本,让我通过Access服务器控制多个(32)交换机和路由器。我已经创建了一个启动串行连接的类
无论如何,我的问题是如何使用继承方法?我有一个祖父母设备,有2个孩子(父亲)路由器和交换机。这两个孩子成了几个孩子的父亲,让我们用SwitchA SwitchB& amp;在RouterA。现在,在思科设备中,一些配置是标准的'但不是所有的。让我们说我想进入"配置终端"通过串口。
聚焦:
class Devices(object):
'Grandparent Class for Cisco Devices'
def __init__(self, a):
self.__a = a
def enterConfT(self):
self.__a.send( "\r" )
self.__a.send("enable\r")
print("enabled")
self.__a.send( "config terminal\r" )
print("Entered global configuration mode.")
class Switches(Devices):
'Switches Parent?'
def __init__(self):
pass
def do_nothing_yet(self):
pass
class switchA(Switches):
'Catalyst 3850 Teletest'
def __init__(self, x):
self.__x = x
在另一个文件中我得到了:
y = TClasses.cisco.test.switchA(serial1)
y.enterConfT()
这给出了以下异常/错误(我取出了文件目录):
'switchA' object has no attribute '_Devices__a'
['Traceback (most recent call last):\n', ' File "/sorry_privacy/test.py", line 30, in <module>\n y.enterConfT()\n', ' File "/sorry_hehe/TClasses.py", line 24, in enterConfT\n self.__a.send( "\\r" )\n', "AttributeError: 'switchA' object has no attribute '_Devices__a'\n"]
我希望能够在指向同一个对象时保持变量a和x私有。 我从OOP和C ++中了解到,Minimalise重复代码,我似乎没有C ++中的祖父遗传问题,但我知道Python的工作方式不同。我也读过一些Q&amp; A但却无法理解他们的意思。我是一名初学Python脚本编写者。
提前谢谢你,原谅我的英语。
答案 0 :(得分:-1)
找到答案。在 init 中使用super()我可以从父级初始化。
这很有帮助,因为我倾向于阅读速度非常快且全局。 https://www.python-course.eu/python3_inheritance.php