zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Atom 和 markdown 基本使用
    c++11 正则表达式基本使用
    Emacs 之窗口管理
    Emacs 之列编辑模式
    Emacs 之查看帮助
    使用 json_in_java
    Linux服务 httpd
    Linux 编译安装BIND
    Kerberos
    Linux服务 DNS&BIND
  • 原文地址:https://www.cnblogs.com/tangda/p/12299034.html
Copyright © 2011-2022 走看看