Python高级语法解析

本文深入探讨Python的高级语法,包括类和元类的区别,类的实例化过程中的__new__和__init__方法,以及实例方法、类方法和静态方法的差异。详细阐述了类的常用魔术属性及其作用,如__doc__、__class__等,并介绍了property属性的用途。此外,还讨论了抽象类和接口的区别,以及类的私有化属性访问、比较操作的实现。最后,文章提到了Python中的装饰器、闭包、迭代器和生成器,强调了装饰器的使用方法和功能,并对比了浅拷贝和深拷贝。
摘要由CSDN通过智能技术生成

2. Python 高级语法
2.1 类和元类
2.1.1 类 class 和元类 metaclass 的有什么区别?
类仅仅是一段可以生成对象的代码,元类是一个类的类,就像类定义了实例的行为,元类定义了类的行为。一个类是元类的实例。可以称为工厂类
2.1.2 类实例化时候,init 和 new 方法有什么作用?
 二者均是Python面向对象语言中的函数,__new__比较少用,__init__则用的比较多。
【异】
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。
2.1.3 实例方法、类方法和静态方法有什么不同?
实例方法(也叫成员方法,用于描述对象的固有行为):默认将当前实例对象传递为第一个参数
类方法(类方法在定义时,方法在上面必须添加@classmethod):默认将当前类传递为第一个参数
静态方法(静态方法在定义时,方法在上面必须添加@staticmethod): 没有默认的第一个参数

2.1.4 类有哪些常用的魔法属性以及它们的作用是什么?
__doc__ 查看类的描述信息
格式:类.doc __
__class
显示当前对象的类是谁
格式:对象.class __
__module
显示当前操作的对象所在的模块
格式:对象.module __
__new
创建对象时为对象分配空间,在初始化方法__init__之前被调用
格式:def new __ ():
__init
初始化方法
格式:def init __ ():
构造方法:new 和__init__的组合
__del__当对象在内存中释放时自动执行
__call
对象() 或类()() 触发执行__call__ 方法
__dict__ 显示类或对象中的所有属性
__str__获取对象的描述时,默认输出该方法的返回值(字符串) print或"%d"% 变量名
__getitem__ 获取
__setitem__ 设置
__delitem__ 删除

2.1.5 类中的 property 属性有什么作用?
2.1.6 描述一下抽象类和接口类的区别和联系?
抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
抽象类要被子类继承,接口要被类实现。
接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
抽象方法只能申明,不能实现。
抽象类里可以没有抽象方法
如果一个类里有抽象方法,那么这个类只能是抽象类
抽象方法要被实现,所以不能是静态的,也不能是私有的。
接口可以继承接口,并且可多继承接口,但类只能单一继承。
接口可以通过匿名内部类实例化。
接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。而接口表示的是,这个对象能做什么。
2.1.7 类中的私有化属性如何访问?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值