• 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’

  • 相关阅读:
    Greedy Gift Givers 贪婪的送礼者
    USACO 1.1.3 Friday the Thirteenth 黑色星期五
    Prime Matrix(暴力出奇迹)
    博弈论
    好车牌
    C语言中动态内存的分配(malloc,realloc)
    Saruman's Army(贪心)
    Python练习——循环2
    Fox and Number Game
    Repair the Wall (贪心)
  • 原文地址:https://www.cnblogs.com/liyqiang/p/6270501.html
Copyright © 2020-2023  润新知