关于 ipaddress 的 pylint 警告

问题描述

#!/usr/bin/python3.8

""" 检查子网中是否有ip """

导入ip地址

MY_VPC_subnetS = ["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"]

MY_VPC_IPS = ["10.16.0.0/12"、"172.16.12.0/28"、"10.15.90.2/32"]

对于 MY_VPC_subnetS 中的网络: internal_network = ipaddress.ip_network(网络) 对于 MY_VPC_IPS 中的 my_valid_ip: my_ip = ipaddress.ip_network(my_valid_ip) 如果 my_ip.subnet_of(internal_network): 打印(my_ip,“在子网中”,internal_network)

我的警告是 check_ip.py:17:11: E1101: 'IPv4Network' 实例没有 'subnet_of' 成员(无成员) check_ip.py:17:11: E1101: 'IPv6Network' 实例没有 'subnet_of' 成员(无成员)

解决方法

您的代码未格式化,但使用假定格式似乎对我来说工作正常:

 $ cat test.py
import ipaddress

MY_VPC_SUBNETS = ["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"]
MY_VPC_IPS = ["10.16.0.0/12","172.16.12.0/28","10.15.90.2/32"]

for network in MY_VPC_SUBNETS:
    internal_network = ipaddress.ip_network(network)
    for my_valid_ip in MY_VPC_IPS:
        my_ip = ipaddress.ip_network(my_valid_ip)
        if my_ip.subnet_of(internal_network):
            print(my_ip,"in subnet",internal_network)
 $ python3 test.py
10.16.0.0/12 in subnet 10.0.0.0/8
10.15.90.2/32 in subnet 10.0.0.0/8
172.16.12.0/28 in subnet 172.16.0.0/12

 $ python3 --version
Python 3.8.7

 $ pylint --disable=C0111 test.py

-------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 9.00/10,+1.00)

禁用只是为了缺少文档字符串。