• Python奇思妙想(胡思乱想)


    1.一道简单习题引发的思考深坑(通过globals及字典推导式获取类实例化了哪些对象)

      初衷就是为了打印如下的信息:

    小明,10岁,男,最爱大保健
    小明,10岁,男,开车去东北
    小明,10岁,男,最爱大保健
    老李,90岁,男,最爱大保健
    老李,90岁,男,开车去东北
    老李,90岁,男,最爱大保健

      考察的就是类对象调用类的静态字段及对象属性和对象方法;但是我头铁,非要获取这个类都实例化了哪些个对象,都添加到一个容器,让他们循环打印。如此便有了如下的尝试,最终get了通过globals及字典推导式完美解决。

     1 class Person:
     2     hobby_lst = ['最爱大保健', '开车去东北', '最爱大保健']
     3 
     4     def __init__(self, name, age, sex):
     5         self.name = name
     6         self.age = age
     7         self.sex = sex
     8 
     9 
    10 xm = Person('小明', '10岁', '')
    11 ll = Person('老李', '90岁', '')
    12 lz = Person('老张', '108岁', '男仙')
    13 jj = Person('俊杰', '30岁', '')
    14 dic = globals()  # 获取全局的所有变量及方法
    15 # lst = [i for i in dic if isinstance(dic[i], Person)]#开始天真的以为拿到每个对象名就好了,后来发现你拿到的是字符串,并不能调用对象的属性
    16 dic1 = {k: v for k, v in dic.items() if isinstance(dic[k], Person)}  # 故而改成了字典里面为对象名的字符串对应它的内存地址,这下就可以玩了
    17 for i in dic1.values():
    18     for j in Person.hobby_lst:
    19         print(f'{i.name},{i.age},{i.sex},{j}')
    不玩不知道,都是坑
  • 相关阅读:
    改变字符串里面多个颜色
    悬浮按钮
    改变一串字体的多个颜色
    iOS上如何让按钮文本左对齐问题
    Swift中的willSet与didSet
    Swift语法之 ---- ?和!区别
    UIButton文字的显示位置,字体的大小
    javaweb要点复习 jsp和servlet
    常量指针和指针常量
    判断括号序列的合法性
  • 原文地址:https://www.cnblogs.com/changwentao/p/9239713.html
Copyright © 2020-2023  润新知