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’

  • 相关阅读:
    处处留心皆学问,世事如棋局局新…
    【转载】2017 软件测试行业现状调查报告_From_51testing_On_20180625
    Hello World In Go ...
    C# 易错题整理
    C# 函数
    C# 哈希表,队列,栈
    C# 数组,集合,泛型集合
    C# 如何生成验证码
    C# 年月日时间题+Timespan
    闰年的一个BUG
  • 原文地址:https://www.cnblogs.com/liyqiang/p/6270501.html
Copyright © 2011-2022 走看看