Python - 祖父母方法(基因)

时间:2017-09-20 13:46:31

标签: python class oop object

我目前正在编写一个简单的脚本,让我通过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脚本编写者。

提前谢谢你,原谅我的英语。

1 个答案:

答案 0 :(得分:-1)

找到答案。在 init 中使用super()我可以从父级初始化。

这很有帮助,因为我倾向于阅读速度非常快且全局。 https://www.python-course.eu/python3_inheritance.php