zoukankan      html  css  js  c++  java
  • Python反射函数

    • python里面跟getattr相关的有hasattr,setattr,delattr  ,那么我们通过下面的例子,来详细的说说他们的用法。
    class Xiaorui:
    
         def __init__(self):
    
            self.name = ‘fengyun’
    
        def setName(self,name):
    
            self.name = name
    
        def getName(self):
    
            return self.name
    
        def greet(self):
    
            print “Hello,i’m %s”%self.name  
    
    foo = Xiaorui()

    一. hasattr(object,name)

    bool       判断object中是否具有name属性,例如:

    foo = Xiaorui()

    hasattr(foo,’setName’) #判断setName是否存在,存在则返回True。

    二. getattr(object,name,default)

    如果存在name属性(方法)则返回name的值(方法地址)否则返回default值。

    getattr(foo,’name’,’NA’) #存在name属性,所以返回其value

    ‘fengyun’

    getattr(foo,’age’,’NA’)

    ‘NA’

    一会发现,他其实跟直接object.name 用法一样。 

    三. setattr(object,name,default)

    setattr(foo,’age’,’18’) #

    字符串可能会列出一个现有的属性(或一个新的属性)。这个函数将值赋给属性的

    .类似foo.age = 18

    getattr(foo,’age’,’not find’)

    ’18’ 

    setattr(foo,’work’,’student’) #

    可以用setattr方法,把foo的work变量,设置为student

    getattr(foo,’work’,’not find’)

    ‘student’

    四. delattr(object,’name’)

    delattr(foo,’name’)#删除属性name,原值为‘fengyun’

    getattr(foo,’name’,’not find’)

    ‘not find’

  • 相关阅读:
    java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
    jetty9内嵌到应用,并在启动后加载WebApplicationInitializer,可运行jsp
    Gradle Maven 依赖管理
    gradle多模块开发
    Github .gitignore详解
    Could not find or load main class org.gradle.wrapper.GradleWrapperMain解决办法
    SOC 与 ARM
    Codis集群的搭建与使用
    TIDB VS COCKROACHEB
    mysql故障
  • 原文地址:https://www.cnblogs.com/liyqiang/p/6270501.html
Copyright © 2011-2022 走看看