Python学习 对象属性进行操作的函数(hasattr()、getattr()、setattr())

这次是介绍对一个对象属性进行操作的函数,是在看神经网络代码判断是否有指定层时发现的函数。主要有两大部分一是函数介绍,二是对python的类和对象的介绍。

一、函数介绍

首先定义一个类:

>>> class test():
...     A = 100
...     def run(self):
...             print("daydayjump")

实例化类得到一个对象: 

>>> a = test()

1、hasattr()  判断是否有某个属性

hasattr(object,name)

object代表要判断的对象,name代表要判断是否存在的属性(name要以字符串形式)。   如果存在就返回True,否则返回False。

>>> hasattr(a,'A')
True

2、getattr() 获取对象的某个属性

getattr(object,name[,default])

object代表判断的对象,name代表对象的属性(name要以字符串属性),default代表默认返回值,不提供且没有对应属性时,将触发AttributeError。一般是不加default,返回对象属性值。

注意,如果获取的是方法的话,返回的是方法的内存地址,如果需要运行这个方法需要在后面加一个括号。

# 获取对象的方法
>>> getattr(a,"run")
<bound method test.run of <__main__.test object at 0x0000021F2214CF60>>

#获取对象方法的运行值
>>> getattr(a,"run")()
daydayjump

3、setattr()设置对象的某个属性值,该属性如果不存在,创建后赋值。

setattr(object, name, value)

一般setattr()可以配合hasattr(), 判断是否有该属性,没有的话就进行赋值。

>>> if not hasattr(a,"B"):
...     setattr(a,"B",200)
...     getattr(a,"B")
...
200

4、delattr() 删除对象的某个属性。

delattr(object,name)

这个函数是没有返回值,所以要用还是加上打印信息比较好。

二、python类和对象的介绍

1、定义

python是面向对象的语言,这是开始学python都知道的概念,但是什么是对象呢?

要先从类开始说,类是具有相同属性和方法的对象的集合,它定义这些对象共有的属性和方法,也就是代码中的class,就是上文中的test类。

对象就是类的实例化,从代码角度来说,就是定义好类之后,令一个变量等于这个类,就完成了对象的实例化,就是上文中的a对象。

方法就是类中的函数,如上文的run方法。

2、在类中需要注意的是"self", 它其实代表了实例,也就是实例化的对象,对self的操作代表了对实例后对象的操作。其实个人觉得就是代表对象的参数。在类中的方法必须有一个额外的参数,一般而言会定义为"self"。在普通的函数是不需要的

3、在类中初始化方法时,一般会有__init()__方法,实例化这个类的对象会调用这个方法,也是通过此方法来接收参数。

4、对于类的属性,可以分为定义的属性和python内置的类属性。    python内置的类属性大体有:

__dict__:类的属性,返回值是一个字典,由类的数据属性组成。

__doc__: 文档说明,返回查询类或者函数定义的第一段注释文档。 注意是紧跟后面的注释文档,一般起到说明帮助的作用。可以配合docopt来使用,具体方法请参考:docopt

class test():
"""help"""
"""not help""" 
    def __init__(self):
        """not help"""

简单例子就是当你打印test.__doc__时,只会出现help,后面的注释内容不会出现。

其他的属性就不介绍了。

其实通过dir(class) ,class代表要查询的类名,就可以得到这个类所有的属性。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值