[ python ] 面向对象笔记

1、继承
super()
多继承 近似广度优先 C3算法

2、私有属性、私有方法
在self.age的age、def breath的age和breath前多加俩下划线,外部访问不了,在class实例中可以访问得到

3、访问私有方法与属性
a._Dog__sh() #Dog是类名

4、抛出异常
raise 异常类型(“内容”) #可提醒子类重写父类方法

5、类方法
@classmethod 装饰,把self本身变成类本身
不能访问实例变量,只能访问类变量(定义时没有self的,非实例,写在def外面的属于类的变量)

6、类属性修改
在这里插入图片描述
7、静态方法
@staticmethod装饰,不能访问类变量,也不能访问实例变量,隔断了它与类和实例的任何关系;名义上只是放在类下;函数输入变量self变成了输入变量,不再指代实例

8、属性方法property
把一个方法变成一个静态的属性,例如执行类方法不用加(self)了
调用方式上是变量,但是外界还是不能修改的;
在这里插入图片描述
若还是想修改,则 方法名.setter
在这里插入图片描述
9、反射
hasattr(obj,name) #用字符串形式判断对象有没有该属性或方法
getattr(obj,name)#获取
setattr(obj,name,new) #赋值
delattr #删除

class Dog:
    def walk(self):
        print("我硕化")

dog = Dog()

youwantofind = input(">>").strip()
if hasattr(dog,youwantofind):
    func = getattr(dog,youwantofind)
    print(func())

setattr

def sh(self):
	print("111")
dog = Dog()
setattr(dog,"sh",sh)#若是dog换成Dog,则下一行不需要传入实例
dog.sh(dog)#注意这里,有点像静态方法staticmethod

10、反射的妙用 #以菜单界面为例
在这里插入图片描述
想想之前面向过程的编法…


11、双下划线方法
(1) len
只要len一个对象就会触发

(2)hash 方法同
(3)eq
判断a1==a2时触发

(4)item系列
只要执行对应的就会触发
在这里插入图片描述
12、str & repr
在这里插入图片描述
13、析构方法
del
在这里插入图片描述
程序被释放的时候执行

14、__new__方法,在__init__前执行
#实现单例化
在这里插入图片描述
在这里插入图片描述
15、call
实例名+括号或者类名+括号的时候执行,例如s=School(),s()或School()()的时候执行

16、动态创建一个类 type
在这里插入图片描述
17、isinstance(0bj,cls)
判断obj是否为该类

18、assert断言
在这里插入图片描述
19.module__和__class
查看当前操作对象在哪个模块与哪个类

猜你喜欢

转载自blog.csdn.net/Sgmple/article/details/111499867
今日推荐