class A:
def add(self, t):
print(t, '走了a')
class B:
def add(self, t):
print(t, '走了b')
host_names = A()
ips = B()
class IpChecker:
def __init__(self, ip):
self.is_ip = ip
# ll = [0, 1, 2, 3, 4]
# li = ll[bool()]
# print(li)
t = '123'
# 一行表达式True表示1,False表示0在对列表取值的时候ll[True],如果列表内判断的不为bool值类型,不能使用需要进行数据类型转换,
# 成立时对列表或元组进行取值时,True为1也就是取列表或元组索引为1的值
# 不成立时对列表或元组进行取值时,False为0也就是取列表或元组索引为0的值
# 下面代码进行解答[bool(IpChecker(t).is_ip)]先看这里面的,这里面由上面代码可知is_ip为'123',转bool类型为True所以索引为1取的就是ips.add这个类中函数的内存地址,然后又加括号(t)调用相当于这个ips.add(t)调用,所以会打印,'123' 走了b
(host_names.add, ips.add)[bool(IpChecker(t).is_ip)](t)
标签:python,ip,代码,列表,ips,add,bool,局限性,True
From: https://www.cnblogs.com/clever-cat/p/17212482.html