• python 反射之getattr用法


    models.py

    class CompanyTenant(models.Model):
        tenant_id = 'id'
        created_date = models.DateTimeField(
            auto_now_add=True,
        )
        name = models.CharField(
            max_length=256
        )
        domain_name = models.CharField(
            max_length=256
        )

    下面进入shell模式

    In [1]: models import CompanyTenant # 导入模型表                                                                                                                                                                                          
    
    In [2]: tenant = getattr(CompanyTenant,'tenant_id','')   # 获取模型表有的属性   如果没有则设置默认值为空“”                                                                                                                                                                           
    
    In [3]: print(tenant)   # 得到这个模型表有的属性的值                                                                                                                                                                                                               
    id                                                                                                                                                                           
    
    In [5]: tenant_tests = getattr(CompanyTenant,'tenant_ids') # 获取模型表没有的属性 且没有设置默认值 则直接报错                                                                                                                                                                          
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-5-d9b95f7649b6> in <module>
    ----> 1 tenant_tests = getattr(CompanyTenant,'tenant_ids')
    
    AttributeError: type object 'CompanyTenant' has no attribute 'tenant_ids'                                                                                                                                                                                                                             
    In [8]: tenant_tests = getattr(CompanyTenant,'tenant_ids','many') # 获取模型表没有的属性 设置默认值  则返回设置的默认值                                                                                                                                                                     
    
    In [9]: print(tenant_tests) # 返回默认值many 如果这个时候为many 则说明该对象没有该属性  可以用if else 流程判断来处理下面结果。                                                                                                                                                                                                           
    many
  • 相关阅读:
    java设计模式之建造者模式
    java设计模式之工厂模式
    Java并发—简介与线程创建
    Java基础—反射(转载)
    Eclipse中svn操作
    js常用方法总结
    Oracle学习笔记—常用函数
    Oracle学习笔记—connect、resource和dba三种权限(转载)
    JavaWeb—拦截器Interceptor
    JavaWeb—监听器Listener
  • 原文地址:https://www.cnblogs.com/tangda/p/12299034.html
Copyright © 2020-2023  润新知