Python--元编程

1.类方法
关键字:@classmethod

@classmethod
def from_string(cls,date_as_string):
    #cls时类方法的关键字,代表调用的类,可能是其子类调用
    year,month,day=map(int,date_as_string.splite('-'))
    date1=cls(day,month,year)
    return date1

2.str
打印类的实例的时候展示的内容

3.静态方法
关键字:@staticmethod
无论谁来调用,都是返回相同的内容
直接通过类来调用即可

4.特殊方法
属性:
getattr setattr delattr_ __getattribute
实例生成/类生成:
init new
数字计算:
add sub mul div pow
调用方法:
str repr len bool
比较大小:
cmp lt le eq ne(不等于) gt ge
集合访问:
setslice getslice getitem setitem contains
迭代器:
iter next

5.继承
通过已有的类来生成新的类,继承父类已有的属性和方法

6.base
追溯父类

7.inspect模块
import inspect
inspect.getmro(class_name)
来查看这个类继承的顺序
mro--method resolution order

在新式类中,继承是广度优先的

8.多重继承
Python支持多重继承,
在新式类中,继承是广度优先的
在经典类中,继承是深度优先的

9.钻石继承
类的多个父类的父类是同一个类。
当调用一个继承方法时,可能会多次执行爷爷类的一个方法多次。
解决:
利用super,super是一个类,不是函数(只在新式类里有)
可以采用super(cls,self).func()的方式来调用父类的方法

10.组合
利用已有的类,生成新的类
将一些类的实例作为参数传入新函数的构造函数

11.多态
多态是不同类的相通方法,相同参数,不同功能。调用时便于将一组对象放在集合里,无需判断对象的具体类型,统一调用。

重载:相通方法的不同参数类型。

里氏代换原则:
父类出现的地方,子类一定可以出现,反之则不一定;

12.元编程
用元类区进行编程的一种方法
生成类的类。
Type(name,bases,sttrs)
name:类名字符串
bases:父类元组
attrs:属性字典

13.type生成元类
格式:type(name,bases,attrs)

#生成元类
A=type('A',(object,),{'b':1})
#这样 就可以让程序帮你产生一个类
#实例化一个对象
a=A()
print A,a.b

14.
元类里面都是类方法
因为元类生成的都是类

用元类生成类可以用关键词:metaclass

class SimpleMeta1(type):
    def __init__(cls,name,bases,atts):
        super(SimpleMeta1,cls).__init__(name,bases,attr)
        cls.test=lambda self:"Yes!This is a test."

class A(Object):
    __metaclass__=SimpleMeta1

a=A()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值