[TOC]
1 setitem getitem delitem
把 对象操作属性模拟字典格式123456789101112131415class Foo: def __init__(self,name): self.name=name def __getitem__(self, item): return self.__dict__[item] # getitem 通过return返回 def __setitem__(self, key, value): self.__dict__[key]=value # 真正操作的是字典中的 def __delitem__(self,key): # self....
Python 面向对象进阶
1 isinstance 和issubclass
instance:判断该对象是否是类的对象 isinstance(obj,Foo)
12x = []print(isinstance(x,list))
结果:True
issubclass:判断是否是继承123456class Foo: passclass Bar(Foo): passprint(issubclass(Bar,Foo))
结果:True
通过下面的方式也可以查看print(Bar.base)
2 反射
反射是Smi首次提出的,主要指程序可以访问、检测和修改它本身状态行为的一种能力,也可以叫做自省
2.1面向对象中的反射面向对象中的反射,是通过字符串形式操作对象的属性,Python中一切都是对象,都可...
Python 静态方法 类方法
通常情况下,类中函数中定义的所有函数,,都是对象的绑定方法,除此之外,还有专门的静态方法和类方法,这两个是专门给类使用的,但是对象非要调用也是不会报错的。
对象在调用的时候会把自己传递给self,也就是绑定方法的第一个参数。
1 静态方法
这里定义spam的时候没有self,而是传入了xyz,类在使用的时候必须传入3个参数1234567class Foo: @staticmethod # spam = staticmethod(apam) def spam(x,y,z): print(x,y,z) # spm = staticmethod(spam)Foo.spam(1,2,3)
应用场景首相先了解下时间模块的使用1234567>>>...
Python 封装补充
property属性property实际是setter getter deleter是集合体,并不是一个单独的方法
123456789101112131415161718import math # 使用的库class Circle: def __init__(self,radius): #定义圆的半径 self.radius = radius @property # area = property(area) # def area(self): return math.pi * self.radius**2 # 在类内部的函数,返回值 @property def peirimeter(self): re...
Python 的多态与多态性
多态:是指一类事物有多种形态(!!!!定义角度!!!!)
多态性:在继承的基础上, (!!!!使用角度!!!!!)
使用多态性,实现了利用函数统一调用一个接口
多态
1234567891011121314151617181920212223242526#多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度)class Animal: def run(self): raise AttributeError('子类必须实现这个方法')class People(Animal): def run(self): print('人正在走')class Pig(Animal): def run(self): print('pig ...