zoukankan      html  css  js  c++  java
  • 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}')
    不玩不知道,都是坑
  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/changwentao/p/9239713.html
Copyright © 2011-2022 走看看