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
原文地址:https://www.cnblogs.com/tangda/p/12299034.html