python一行代码,有局限性

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)
posted @ 2023-03-13 18:45  clever-cat  阅读(14)  评论(0编辑  收藏  举报