如何在python中打印自定义对象的数组?

Menash

我是一个尝试学习一些python能够自动化的网络专家。我在掌握OOP时遇到了困难。写了下面的脚本(我认为不是很完美)进行实验,并且我不断得到以下内容作为输出:

路由器对象位于0x0000021C68033E80

我的脚本:

class Router:
    name=''
    def __init__(self,ip,network):
        self.ip = ip
        self.network=network

    def getip(self):
        print(self.ip)
    def getname(self):
        print(self.name)
    def getnetwork(self):
        print(self.network)

class Switch(Router):
    def __init__(self,ip,network,layer):
        Router.__init__(self,ip,network)
        self.layer=layer
        self.vlans=[]
    def addvlan(self,vlan):
        self.vlans.append(vlan)
    def getvlans(self):
        print(self.vlans)
    def getlayer(self):
        print(self.layer)

routers=[]
switches=[]
while(True):
    rors = ""
    while(rors != "router" and rors!= "switch" and rors != "0"):
        rors = input("router or switch? 0 to exit: ")
    if(rors=="router"):
        routers.append(Router(input("enter ip: "),input("enter network: ")))
    elif(rors=="switch"):
        switches.append(Switch(input("enter ip: "),input("enter network: "),input("layer?: ")))
        stop=1
        while(stop!=0):
            stop=int(input("enter 1 to continue, 0 to stop adding vlans: "))
            if(stop==0):break
            switches[len(switches)-1].addvlan(int(input("add vlan: ")))
    elif(rors == "0"):
        break
    else: print("input error")

print(switches)
print(routers)

我知道通过打印列表,我只打印内存指针指向的位置,但是我该如何使值本身真正被打印呢?谢谢您的帮助!

切碎

您需要重写__repr__方法以更改对象的字符串表示形式。这是一个例子:

In [1]: class A1:
   ...:     def __init__(self, a, b):
   ...:         self.a = a
   ...:         self.b = b
   ...:

In [2]: class A2:
   ...:     def __init__(self, a, b):
   ...:         self.a = a
   ...:         self.b = b
   ...:     def __repr__(self):
   ...:         kvps = [f"{k}={v}" for k, v in vars(self).items()]
   ...:         return f"{type(self).__name__}({', '.join(kvps)})"
   ...:

In [3]: A1(1, 2)
Out[3]: <__main__.A1 at 0x7f533357fe20>

In [4]: A2(1, 2)
Out[4]: A2(a=1, b=2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在JavaScript中“正确”创建自定义对象?

如何在Bundle中传递自定义对象?

如何在Go中遍历自定义类型的数组?

如何在Go中创建自定义类型元素的自定义类型数组?

如何在NSUserDefaults中存储自定义对象

如何在GraphQL中创建自定义对象列表

如何在自定义索引的列表中插入对象

如何在NSUserDefaults中存储自定义对象

如何返回自定义对象数组?

如何在自定义对象的<<操作符中添加自定义前缀

如何在Swift 3中按自定义状态值对自定义对象数组进行排序?

如何在Typescript中打印自定义对象的属性?

如何在C中存储自定义对象(结构)?

如何在clojurescript中为本机对象自定义打印功能

如何在R中为S4对象创建自定义打印方法

如何在Kusto中创建自定义输出对象

如何在torchscript中使用自定义python对象

如何在Racket中自定义程序的打印?

谁能告诉我如何在Firebase Firestore(Android)中存储自定义对象的数组

如何在javascript中创建自定义对象?

如何在Java数组中按字母顺序对自定义对象进行排序?

Swift:如何在Core Data中存储自定义对象的数组?

Python。如何有效地从数组中删除自定义对象

如何在Swift中向自定义对象数组添加元素

如何在自定义类对象中为动态数组使用DefineProperties-Delphi

如何在mongdb中自定义数组

如何在 Cassandra 中存储自定义对象?

如何在 Python 中使用自定义对象 ID 在 MongoDB 中插入文档

如何在 Python 中使用 jsonschema 验证自定义对象数组