我想制作一个IPNetwork变量的副本,而不是引用(和更改)现有变量。为什么更改'x'也会改变'nw'?
>>> nw=IPNetwork('1.1.1.1/24')
>>> nw
IPNetwork('1.1.1.1/24')
>>> x = nw
>>> x.prefixlen = 28
>>> nw
IPNetwork('1.1.1.1/28')
答案 0 :(得分:0)
问题在于变量赋值。 x = nw
告诉变量x
指向nw
指向的同一个对象。
您需要的是列表或其他可变对象:
>>> nw = [IPNetwork('1.1.1.1/24')]
>>> x = nw
>>> x[0].prefixlen = 28
>>> x[0]
希望这有帮助!
答案 1 :(得分:0)
不幸的是,这与x和nw引用相同变量的结果相同:
来自netaddr import *
nw = [IPNetwork('1.1.1.1/24')]
x = nw
X [0] .prefixlen = 28
X
[IPNetwork( '1.1.1.1/28')]
NW
[IPNetwork( '1.1.1.1/28')]
我想出了使用IPNetwork创建新实例的解决方案:
NW = IPNetwork( '1.1.1.1/24')
NW
IPNetwork( '1.1.1.1/24')
x = IPNetwork(nw)
x.prefixlen = 28
X
IPNetwork( '1.1.1.1/28')
NW
IPNetwork( '1.1.1.1/24')