面向对象高级小结

isinstance,issubclass

isinstance判断是否为类的实例化对象,会检测父类,而type不会检测父类

issubclass,判断是否为其子类

阅读全文 »

单独调用父类的方法

需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1。

使用方法1打印: 胖子老板,来包槟榔。

阅读全文 »

封装什么

  • 你钱包的有多少钱(数据的封装)
  • 你的性取向(数据的封装)
  • 你撒尿的具体功能是怎么实现的(方法的封装)
    阅读全文 »

绑定方法

对象的绑定方法

在类中没有被任何装饰器修饰的方法就是 绑定到对象的方法,这类方法专门为对象定制。

阅读全文 »

反射在类中的使用

反射就是通过字符串来操作类或者对象的属性

  • 反射本质就是在使用内置函数,其中反射有以下四个内置函数:
    阅读全文 »

描述符

  • 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了

    get(),set(),delete()中的一个,这也被称为描述符协议

    • get():调用一个属性时,触发
    • set():为一个属性赋值时,触发
    • delete():采用del删除属性时,触发
  • 定义一个描述符

    阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Foo:
def __init__(self, name):
self.name = name

def __getitem__(self, item):
print('getitem执行', self.__dict__[item])

def __setitem__(self, key, value):
print('setitem执行')
self.__dict__[key] = value

def __delitem__(self, key):
print('del obj[key]时,delitem执行')
self.__dict__.pop(key)

def __delattr__(self, item):
print('del obj.key时,delattr执行')
self.__dict__.pop(item)


f1 = Foo('sb')
阅读全文 »

实现迭代器

简单示例

  • 死循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Foo:
def __init__(self, x):
self.x = x

def __iter__(self):
return self

def __next__(self):
self.x += 1
return self.x


f = Foo(3)
for i in f:
print(i)
阅读全文 »