python操作对象属性

作者: lintong | 来源:发表于2015-02-25 23:09 被阅读693次

getattr

getattr(a,'b')的作用就和a.b是一样的。那么这个内建函数有什么作用呢,最方便的无疑是使用它来实现工厂方法(Factory Method)模式。

参数说明:
object:对象的实例
name:字符串,对象的成员函数的名字或者成员变量
default:当对象中没有该属性时,返回的默认值异常:当没有该属性并且没有默认的返回值时,抛出"AttrbuteError"。

异常安全的写法:

主要有两种异常
AttributeError: 对象中没有该属性

try:
    func = getattr(obj,"method")
except AttributeError:
    ...... deal
else:
    result = func(args)
// 或指定默认返回值
func = getattr(obj,"method", None)
if func:
    func(args)

TypeError: 不可调用

func = getattr(obj,"method", None)]
if callable(func):
    func(args)

setattr:

setattr()表示你可以通过该方法,给对象添加或者修改指定的属性。setattr()方法接受3个参数:setattr(对象,属性,属性的值)

delattr:

delattr()表示你可以通过该方法,删除指定的对象属性
delattr方法接受2个参数:delattr(对象,属性)

下面是代码的应用

#encoding=utf-8
class student(object):
    def __init__(self,name,age):
        self.name = name
        self.age = ages
info = student('xiaoming',32)
print sinfo.name
setattr(sinfo,'python','haha')
##和:sinfo.python = 'haha' 效果一样
print sinfo.__dict__
delattr(sinfo,'python')
##和del sinfo.python效果一样
print sinfo.__dict__

相关文章

  • python操作对象属性

    getattr getattr(a,'b')的作用就和a.b是一样的。那么这个内建函数有什么作用呢,最方便的无疑是...

  • 面向对象:反射,内置方法

    反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使...

  • Python高级第四天

    对象属性管理 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的...

  • 27.Python之面向对象的反射

    Python之面向对象的反射 反射的定义通过字符串来操作类与对象的属性(attribute)、实例变量、绑定方法等...

  • python基础-02

    Python 面向对象 python是一门面向对象的语言 Python内置类属性 python对象销毁(垃圾回收)...

  • 属性节点,文本节点,文档片段节点

    属性节点属性本身就是一个对象(Attr对象),但是实际上我们都是操作的Element对象来进行操作属性。(可读可写...

  • 对象属性的增删改查

    python中对象的属性支持增删改查 属性的增删改查 1.查(获取对象属性) 对象.属性 - 获取指定对象指定属...

  • python中的标准类型

    python使用对象来存储数据,类型是每个对象都有的属性,准确地说,所有的python对象都有三个属性:身份,类型...

  • DOM操作-1:attributes属性 / getAttrib

    DOM属性操作 注意.和[ ]都是ECMAScript中,对象的属性操作,对象属性的值会被存在内存中,想要直接获...

  • 类和模块的特殊属性和方法

    Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统...

网友评论

    本文标题:python操作对象属性

    本文链接:https://www.haomeiwen.com/subject/jkcpxttx.html