刘沙河 刘沙河
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希

花开半夏,半夏花开
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希
  • Python基础

    • 运算符-while循环
    • 数据类型
    • 知识补充&数据类型列表,元祖
    • 字典
    • 数据类型-集合
    • 深浅拷贝&文件操作
    • 文件操作Ⅱ
    • 函数Ⅰ(基础)
    • 函数Ⅱ(参数&作用域)
    • 函数Ⅲ(内置函数&lambda表达式)
    • 函数Ⅳ(闭包&内置模块)
    • 装饰器&推导式
    • 装饰器(二)&模块(一)
    • 模块(二)
    • 模块(总)
    • 迭代器&生成器
    • 面向对象(一)
      • 1.面向对象基本用法
        • 1.1基本格式
        • 1.2调用方法
        • 1.3对象的作用
        • 1.4类的初始化方法
      • 2.面向对象的三大特性
        • 2.1封装
        • 2.2继承
        • 2.3多态
    • 面向对象(二)类成员&成员修饰符
    • 面向对象(三)特殊方法
    • 面向对象(四) 约束&反射
    • 正则表达式
    • re模块
  • Python进阶

  • Python并发编程

  • Django

  • Flask

  • 爬虫

  • Python
  • Python基础
bigox
2022-06-16
目录
1.面向对象基本用法
1.1基本格式
1.2调用方法
1.3对象的作用
1.4类的初始化方法
2.面向对象的三大特性
2.1封装
2.2继承
2.3多态

面向对象(一)

  • 封装思想:将同一类的函数函数封装到同一个py文件中,方便调用

  • 面向对象也有封装的作用,将同一类的函数封装到一个类中

  • 多态(鸭子模型):多种类型/多种形态

    #面试题,什么事鸭子模型
    对于一个函数,python对于参数的类型不会限制,传入参数时就可以是各种类型,但是在函数中如果有类似于索引等特有方法,就会对传入的参数类型有一个限制(类似于字符串的.append.send方法)
    类似于上述的函数我们认为只要能呱呱叫的就是鸭子(只要有.send方法,就是我们要想的类型)
    # Python
    def func(arg):
        v = arg[-1] # arg.append(9)
        print(v)
    
    # java
    def func(str arg):
        v = arg[-1]
        print(v)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

# 1.面向对象基本用法

# 1.1基本格式

class 类名:
    def __init__(self,x):
        self.x = x
    def 方法名字 (self):   #函数在类里称为方法,self就是固定参数,必须写self
        print('方法')
        return 
    def 方法名字 (self):   
        print('方法')
        return 
#实例化一个类的对象
v1 = 类(可以传参)
v2.方法()
1
2
3
4
5
6
7
8
9
10
11
12

# 1.2调用方法

  1. 创建类的对象(实例化对象)

    obj=类名() #创建了一个Account类的对象

  2. 使用对象调用类的方法

    obj.函数名字()调用时方法是有返回值的,与函数类似

  • 应用场景:
 - 函数(业务功能)比较多,可以使用面向对象来进行归类。
 - 想要做数据封装(创建字典存储数据时,面向对象)。
 - 游戏示例:创建一些角色并且根据角色需要再创建人物。
1
2
3

# 1.3对象的作用

  • 存储一些值,方便自己使用

    class file:
        def read(self):
            with open(self.xxx, mode='mode='r', encoding='utf-8') as f:
                data = f.read()
            return data
    
        def write(self,content):
            with open(self.xxx, mode='mode='a', encoding='utf-8') as f:
                f.write(content)
    
    # 实例化一个file的对象
    v1 = file()
    # 在对象中写了一个xxx='test.log'
    v1.xxx = 'test.log'
    # 通过对象调用类中的read方法,read方法中的self就v1:
    #v1.read()
    obj1.write('alex')
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

# 1.4类的初始化方法

  • 类() 实例化对象,自动执行此类中的 __ init __方法。

  • __ init __ 初始化方法(构造方法),为对象内部做初始化

  • 如果有一个反复使用的公共值,课可以放到对象中

class Person:
    def __init__ (self,n,a,g):
        self.name=n
        self.age =a
        self.gender= g
    def show(self):
        temp= '我是%s,今年%s,性别%s'%(self.name,self.age,self.gender)
        print(temp)
# 类() 实例化对象,自动执行此类中的 __init__方法。
p1 = Person('bigox',20,'男')
p1 = show()
1
2
3
4
5
6
7
8
9
10
11

# 2.面向对象的三大特性

# 2.1封装

class File:
    def read(self):
        pass
    def write(self):
        pass
1
2
3
4
5
class Person:
    def __init__(sef,name,age):
        self.name = name
        self.age = age
p = Person('alex',19)
1
2
3
4
5

# 2.2继承

#基本格式
class Base:
    pass
class Foo(Base):
    pass
1
2
3
4
5
  • 在多个类中如果有公共的方法,可以使用继承,增加代码的重用性.

  • 继承关系中查找方法的顺序

    • self是谁?
    • self是哪个类创建的,就从此类开始找,自己没有就找父类
  • 多继承就从左往右

    # 父类(基类)
    class Base:
        def f1(self):
            pass
    # 子类(派生类)
    class Foo(Base):
        def f2(self):
            pass
    
    # 创建了一个字类的对象
    obj = Foo()
    # 执行对象.方法时,优先在自己的类中找,如果没有就是父类中找。
    obj.f2()
    obj.f1()
    
    # 创建了一个父类的对象
    obj = Base()
    obj.f1()
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

# 2.3多态

对于一个函数,python对于参数的类型不会限制,传入参数时就可以是各种类型,但是在函数中如果有类似于索引等特有方法,就会对传入的参数类型有一个限制(类似于字符串的.append.send方法)
类似于上述的函数我们认为只要能呱呱叫的就是鸭子(只要有.send方法,就是我们要想的类型)
# Python
def func(arg):
    v = arg[-1] # arg.append(9)
    print(v)

# java
def func(str arg):
    v = arg[-1]
    print(v)
1
2
3
4
5
6
7
8
9
10
11
#Python#
上次更新: 2023/04/16, 18:35:33
迭代器&生成器
面向对象(二)类成员&成员修饰符

← 迭代器&生成器 面向对象(二)类成员&成员修饰符→

最近更新
01
go与http代理
05-24
02
自制申威架构k8s-reloader
12-06
03
Docker Buildx 教程
12-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 小刘扎扎 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式