- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我希望在这里得到一些澄清(Python 新手)。所以我试图调出一个大的 VLAN,然后根据某些标准将该 VLAN 分成几个较小的子网。
在查看所有类方法时,我看到一个名为 _prefixlen
的方法。看stackoverflow的其他帖子,好像一般_methods一般都是私有(private)模块方法,调用import
的时候不会带进来。 Source here .但是,使用这种方法它确实允许我更改 prefixlen。
import ipaddress as ip
network1 = ip.ip_network(network_allocation)
network1._prefixlen = 10
print(network1.prefixlen)
>>> 10
这是一个正常的惯例,还是我只是被一个正常的惯例搞糊涂了,任何指导都会很有帮助。
最佳答案
在 Python 中没有什么是真正的“私有(private)”的;俗话说“有文化”。带有单个下划线前缀的东西是“准私有(private)”的,因为这是开发人员的说法,“你真的不需要碰这个。” (或者,如果您在应用程序代码中依赖它,它可能会在零通知的情况下发生变化。)
pattern问题似乎是这样的:
@property
def prefixlen(self):
return self._prefixlen
地点:
_prefixlen
是一个属性prefixlen
是一个属性 - 基本上是一个您不需要使用 ()
调用的实例方法,以过度简化事情<在这种情况下,这实际上使 prefixlen
只读,但如果您真的想要,底层属性 _prefixlen
是完全可以修改的:
>>> import ipaddress
>>> nw = ipaddress.ip_network('192.0.2.0/24')
>>> nw.prefixlen
24
>>> nw.prefixlen = 32
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
如果你想修改前缀,你不妨创建一个新对象——添加一个 @property.setter
来修改给定的对象将从根本上改变你正在看的东西,所以 IPv4Network
和 IPv6Network
实例最好被视为不可变的。
一个不错的技巧是类构造函数 accept a tuple对于 address
参数,因此您可以从部分构建:
>>> ipaddress.IPv4Network((nw.network_address, 32))
IPv4Network('192.0.2.0/32')
感谢@chepner 在他下面的评论中提供的最后一个技巧。
关于python - 使用 python 'ipaddress' 以及 _methods 与直接值的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550499/
我尝试了以下代码使我的代码在双堆栈模式下工作。不幸的是,它没有在双栈模式下打开端口。 var listener = new TcpListener(IPAddress.Any, 2222); list
我昨天问了一个关于将 HEX 字符串转换为 IP 的问题,并在这里得到了答案:C# convert hex into ip 问题是,当我使用函数时 var ip = new IPAddress(lon
我一直在尝试从 API 结果中解析 IP 地址,其中 IPv4 地址的四个部分中的每一个都带有前缀 0(零)。像这样: 127.000.000.001 而不是 127.0.0.1 我在尝试解析 192
我正在使用 pythons ipaddress 模块,我试图只获取第一个可用主机,而不是所有可用主机 下面给了我所有的主机,当我试图索引它时,我得到了下面的错误。 有没有其他方法可以只获得第一个可用的
我正在编写一个 Xamarin.Forms 应用程序,并将一个 PCL 项目添加到我在 Visual Studio 2013 中的主要解决方案中。我在使用多个标准 .net 类时遇到问题。这是一个列表
先介绍一些背景。我在局域网中的每台机器上都安装了 .net 客户端代理。他们也在同一个局域网上与我的中央服务器 [网站] 交互。 弄清楚哪些机器可以相互通信对我的网站来说很重要。例如,如果不配置路由器
我有一个服务器应用程序,我试图自动将 IP 地址设置为从机器动态分配的 IP 地址中获取的地址。到目前为止,我已经得到了这个来获取 IPv4,但它作为 IPAddress[] 类型返回,我在转换为 s
我有一个服务器应用程序,我试图自动将 IP 地址设置为从机器动态分配的 IP 地址中获取的地址。到目前为止,我已经得到了这个来获取 IPv4,但它作为 IPAddress[] 类型返回,我在转换为 s
在代表 IPv6 地址的 IPAddress 实例上调用 ToString() 方法,我得到了一些地址后带有百分号的文本。这是not documented .什么意思? 返回值如下所示:fe80::1
您好,是否可以为 jdbc 瘦驱动程序提供机器名称而不是 ipaddress。或者它会在运行时产生某种错误。我尝试使用机器名称而不是本地主机,它正在工作。因此,如果我们可以提供机器名称而不是 ipad
我有一个网络应用程序正在运行,让我们说下面的 IP:10.101.10.101。网络应用程序名称是示例,因此整个 URL 如下:https://10.101.10.101/example 现在尝试使用
我想在变量中获取我的计算机的 ipaddress此语句打印我的计算机的 ipaddress但我想把它分配给一个变量我如何从 inet_ntoa(inaddrr(ifr_addr.sa_data)) 中
好吧,这是一个小问题……但仍然令人恼火。 在 MSVS 2008 .NET 3.5 中,我的 IPAdress.Address 很长,我只是使用了 if(subnet == subnetmask.Ad
我正在使用 IPAddress.TryParse 来验证 IP 地址,但是如果我使用 if (IPAddress.TryParse("192.168.1.009", out ip) 它失败了,但是 i
我有一个函数,它使用 IPAddress 类返回给定 IP 地址是否有效。我正在测试它,即使我在没有点作为参数的情况下传递“0123456”或“11111”或“99999”,它也会返回有效(真)。我用
这个问题在这里已经有了答案: Extract ip addresses from Strings using regex (4 个答案) 关闭 4 年前。 我有一个包含多个 IP 地址的大字符串。
我想知道如何从 DhcpInfo.ipAddress 获取人类可读的 IP 地址?棘手的是,它是一个整数,显然你不能用整数存储 IP 地址。那么,IP 地址是如何编码的,它可以存储在一个 int 中?
我可以检查一个 ip 是否在私有(private)网络中吗?
我正在使用 System.Diagnostics.Eventing.Reader.EventLogWatcher 类 Hook 安全事件日志,并且我正在观察 2008 服务器机器上的事件 ID 462
在 .NET IPAddress.HostToNetworkOrder() 中只能接收一个 long int(64 位)并返回一个 long。这适用于 IPv4,但 IPv6 地址是 128 位的。我
我是一名优秀的程序员,十分优秀!