如何在python中打印自定义对象数组?
我是一个网络人,试图学习一些python来实现自动化。我很难理解OOP。写了下面的脚本(我认为不完美)来进行实验,我一直得到以下输出: main.0x0000021C68033E80处的路由器对象 我的剧本:如何在python中打印自定义对象数组?,python,python-3.x,python-3.8,Python,Python 3.x,Python 3.8,我是一个网络人,试图学习一些python来实现自动化。我很难理解OOP。写了下面的脚本(我认为不完美)来进行实验,我一直得到以下输出: main.0x0000021C68033E80处的路由器对象 我的剧本: class Router: name='' def __init__(self,ip,network): self.ip = ip self.network=network def getip(self): prin
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)
我知道,通过打印列表,我只打印内存指针指向的位置,但是我如何使它成为实际打印的值呢?谢谢你的帮助 您需要重写
方法以更改对象的字符串表示形式。下面是一个例子:
[1]中的:A1类:
…:定义初始化(self,a,b):
…:self.a=a
…:self.b=b
...:
在[2]中:A2类:
…:定义初始化(self,a,b):
…:self.a=a
…:self.b=b
…:定义报告(自我):
…:kvps=[f“{k}={v}”表示k,v在vars(self).items()中
…:返回f“{type(self)。{u name}({,'.join(kvps)})”
...:
In[3]:A1(1,2)
出[3]:
In[4]:A2(1,2)
Out[4]:A2(a=1,b=2)
您需要重写\uuuu repr\uuu
方法来更改对象的字符串表示形式。下面是一个例子:
[1]中的:A1类:
…:定义初始化(self,a,b):
…:self.a=a
…:self.b=b
...:
在[2]中:A2类:
…:定义初始化(self,a,b):
…:self.a=a
…:self.b=b
…:定义报告(自我):
…:kvps=[f“{k}={v}”表示k,v在vars(self).items()中
…:返回f“{type(self)。{u name}({,'.join(kvps)})”
...:
In[3]:A1(1,2)
出[3]:
In[4]:A2(1,2)
Out[4]:A2(a=1,b=2)
您可能想要覆盖\uuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
或\uuuuuuuuuuuuuuuuumethod@dangee1705:如果他们正在打印对象的列表,肯定是<代码>列表
总是打印包含对象的repr
。@ShadowRanger是的,听起来不错,我永远记不起两个列表之间的区别了!=python中的数组。您已经列出您可能想要覆盖\uu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
或\uuuuuuuuuuuuuuuuuuuumethod@dangee1705:如果他们正在打印对象的列表,肯定是<代码>列表
总是打印包含对象的repr
。@ShadowRanger是的,听起来不错,我永远记不起两个列表之间的区别了!=python中的数组。你有名单吗