复习
1.组合: 什么有什么的关系
一个类的属性是另一个类的对象
3.三大特性
1.继承
1经典类深度优先,新式类广度优先(重要)
2抽象类和接口类
3父类(超类,基类) 子类(派生类)
4子类调用方法和属性
5super python3中,根据广度优先寻找调用
2.多态
1.鸭子类型
3.封装:
1.私有的,只能在类内部调用,子类无法继承
4.三个装饰器
1.classmethod ***** 面试
2.property ****
3.staticmethod ***+
学习内容
1.isinstance issubclass
2.反射:用字符串类型的名字,去获取变量
1.eval 会给代码带来安全隐患,但是反射没有
2.反射对象的方法——得到一个绑定方法,加()调用
3.反射类的属性(静态属性),类的方法(类方法)
3.__str__
与 %s str() print(打印一个对象,就是调用对象.__str__) 实际上都是调用__str__方法
4.__repr__
与 %r repr() 实际上是调用__repr__
repr 是str的备胎
5.__len__
len() 相关
6.__del__
与del相关,当自定义类中定义了__del__方法,外部调用del,会同时调用object和自定义类中的__del__
程序结束时,python解释器会释放所有变量
python解释器会将不再使用或者闲置的变量清除
__del__析构函数:在删除一个对象之前进行收尾工作
7.__call__
类中定义__call__方法,实例化后加(),调用call方法
代码区
# class A:
# dic = {'aa':'bb'}
# def func(self):
# print("ssssss")
# @classmethod
# def fun(cls):
# print('funny')
# a1 = A()
# a1.name = 'alex'
# print(getattr(a1,'name'))
# print(getattr(a1,'func'))
# if hasattr(a1,'func'):
# getattr(a1,'func')()
# print(getattr(A, 'dic'))
# print(getattr(A, 'fun'))
#
#
# import my
# print(getattr(my,'a'))
# print(getattr(my,'mya'))
#
# def qq():
# print('qq')
# import sys
# getattr(sys.modules[__name__],'qq')()
# q = input('>>>')
# print(getattr(sys.modules[__name__],'q'))
#
#
# import time
# time.time()
# rec = input('>>>')
# if hasattr(time,'rec'):
# getattr(time,'rec')()
class A:
def __call__(self):
print('me')
a = A()
a.__call__()