python | 面向对象(四):python的自省、元类、抽象基类

本文详细介绍了Python中的自省机制,包括getattr、hasattr、setattr和delattr四个方法的使用。接着探讨了Python的元类,解释了元类如何拦截类的创建,并通过type函数创建类。最后,讨论了抽象基类(Abstract Base Class,ABC),阐述了其在定义接口规范和子类继承中的作用。适合Python初学者和进阶者阅读。

创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜 

前言

“人生苦短,我用python”,我是一个即将毕业的大学生,超超。如果你也爱python,不妨跟着萌新超超一起学习python,拿下python,一起加油,共同努力,拿到理想offer!


系列文章目录

Python | python中的下划线,常用魔术方法与属性

Python | 经典类与新式类,静态方法、类方法与实例方法详解!

Python | 什么是面向对象?类的定义、self和继承详解


概述

本期内容是python面向对象专题第四期,主要介绍python的自省以及python中的元类和抽象基类


目录

前言

系列文章目录

概述

python中的自省

什么是自省

自省的4个方法

代码示例

python的元类

类也是对象

type创建类

元类一般用来拦截类的创建

python面向对象有两种关系

python中的抽象基类

抽象基类(bstract Base Class)

代码示例


python中的自省

什么是自省

• 在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什

么。自省向程序员提供了极大的灵活性和控制力。

• 有时我们要访问某个变量或是方法时并不知道到底有没有这个变量或方法,所以就要做些判断。判断是否存在字符串对应的变量及方法。

• 我们知道访问变量时是不能加引号的,否则会被当成字符串处理。如果要通过字符串找到对应的变量,那该怎么办呢

自省的4个方法

getattr(obj, 'name'): 获取成员

根据字符串去获取obj对象里的对应的方法的内存地址

• hasattr(obj, 'name'): 检查是否含有成员

判断一个对象obj里是否有对应的name_str字符串的方法

• setattr(obj, 'age', 18): 设置成员

• delattr(obj, 'name'): 删除成员


举例说明

import math

# hasattr(math,"xx") # 判断math有没有XX属性

# getattr(math,"xx") # 获取math的xx属性

# setattr(math,"xx","obj") # 设置math的xx属性为obj

# delattr(math,"xx") # 删除math的xx属性

代码示例

class A:

    name = "lzc"

    __max= "max"

    def func1(self):

        print("i am func1")



    def func2(self):

        print("i am func2")



a = A()

choose =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chaochao️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值