首页
学习
活动
专区
工具
TVP
发布

Python面向对象之内置类属性

如果昨日文章没能跟上阅读,这里是传送门,

Python中对象的创建与引用

。不必客气,开始今天的内容吧。

本次内容

一、自定义属性

属性是类或者对象存储数据的地方,而数据又是最核心的部分,这里我们对属性进一步探讨分析。

1、属性分类

在类中,方法外定义的属性为类属性,存储在类空间中,独一份,可共享,在实例方法中以self方式定义的属性为实例属性,存储在实例空间中,每个实例拥有自己的实例属性,不共享。实例属性只能通过实例来调用,类属性可以通过类调用,也可以通过实例来调用,那么我们要知道,在使用属性时,查找的顺序是就近原则,先从对象存储空间查找,找到则停止继续查找,没有就进去类空间查找,找到则停止查找,没找到则报异常。如果存在实例属性与类属性同名时,通过实例调用该属性名,则调用的是实例属性。

2、属性操作1)、添加

通过: 类|对象.属性 = 值 或 setattr(obj, name, value)

使用setattr(obj, name, value)内置函数设置属性值

2)、删除

del 类|对象.属性 或 delattr (类|对象, 属性),由于共享的原因,删除类的属性后,任何实例都不能再使用该属性,删除对象的属性后,本对象不能再使用该属性

删除类属性

3)、获取

对象|类.属性、getattr(对象, 属性名),如果此属性不存在,那么就会报错

4)、判断

使用内置函数hasattr(obj, name)判断

二、内置类属性

1.__dict__

获取类或对象的属性(包含一个字典)

测试

我们在序列化对象时,就可以使用__dict__

测试:

使用json.dumps的第二个参数default 指定序列化的字典属性即可

同理反序列化,使用object_hook参数:

2.__doc__

文档字符串与之前的函数中文档注释同理,即定义在类的下面使用成对单引号、成对双引号、成对三个单引号和成对三个双引号(推荐),解释其功能,方便他人理解。

就是注释啦!可以生成help信息。

3.__name__

获取类名

4.__module__

获取当前类所在的模块名称,如果是自身模块为__main__,如果是被引入的模块,则为它自身的模块名。

a、调用自身的__module__

结果:

b、其他引入的__module__

结果为:

结果为该类所在的模块名称。

注意:

在一个模块中如果__name__ == ‘__main__’时,这时就相当于c语言中的main()方法,__name__属性直接使用,则是获取当前模块的名称,或是在当前模块使用是返回值为__main__,若是被导入其他模块,该值等于模块的名称。

5.__bases__

获取当前类的所有继承的父类,以元组返回父类。

结果:

多继承代码:

结果:

接下来,视频奉上:

内置属性dict

内置属性doc+name

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190417A0MY4F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券