自己动手做爬虫六

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43999482/article/details/102595026
一:鸭子类型

鸭子类型是一个在强类型语言中使用,python崇尚“鸭子类型”
多态:定义是与使用时不一样就称为多肽

class cat(object):
    def __init__(self):
        print("I'm cat")

class dog(object):
    def __init__(self):
        print("I'm dog")

class duck(object):
    def __init__(self):
        print("I'm duck")

animal_list = [cat,dog,duck]
for i in animal_list:
    i()
二:抽象基类(abc模块)

看连接官方文档
通俗来说:只提供接口,不做实现的类

import requests
from collections.abc import Sized

class dome():
    def __init__(self,elist):
        self.elist = elist
    def __len__(self):
        return len(self.elist)

l = dome(["12345","ashfkj"])
print(len(l))

#查看自定义函数有哪些属性
#检查是否有该方法
#print(hasattr(dome,'__len__'))
print(isinstance(dome,Sized))
#强制子类必须实现每一方法
import abc

class Cachebase(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def get(self,key):
        pass

    @abc.abstractmethod
    def set(self, key):
        pass

class a(Cachebase):
    def get(self, key):
        pass

    def set(self, key):
        pass

m = a()
三:类属性与实例化属性
class A:
    #类属性
    a = 1
    #实例化属性
    def __init__(self,x,y):
        self.x=x
        self.y=y
深入对象与类

(1):mro算法,深度优先
(2):bfs算法,广度优先
(3):c3算法,现在在使用

class A:
    pass

class B(A):
    pass

class C(A):
    pass

class D(B,C):
    pass

print(D.__mro__)
四:自省机制

自省是通过一定的机制查询到对象的内部结构
Python中提供了很多的方法来查询对象的内部结构,比如:
hasattr:查询对象是否有一个特性的属性
getattr:获取对象的属性
setattr:设置对象的属性
delattr:从一个对象中删除属性

super
# 调用上一个继承函数方法
class A:
    def __init__(self):
        print('a')


class B(A):
    def __init__(self):
        print('B')


class C(B):
    def __init__(self):
        super(B,self).__init__()#按照mro算法调用


if __name__ == '__main__':
    c = C()

super().init()#按照mro算法调用,默认为上一级的调用

我想要一个元组大于0实数
class Inttuple(tuple):
    def __new__(cls,iterable):
        f = (i for i in iterable if isinstance(i, int) and i > 0)
        return super(Inttuple, cls).__new__(cls, f)

a = Inttuple([1,2,"ahdja"])
print(a)

猜你喜欢

转载自blog.csdn.net/weixin_43999482/article/details/102595026
今日推荐