面向对象最重要的概念就是类(class)和实例(instance),类是抽象,而实例(Instance)则是一个个具体的对象

面向对象三大特点:封装、继承和多态

class Animal(object):

def __init__(self, name):

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

复制代码

一、基本概念

1.1 概念

类(Class):

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:

类变量或者实例变量, 用于处理类及其实例对象的相关的数据。

方法重写:

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

局部变量:

定义在方法中的变量,只作用于当前实例的类。

实例变量:

在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

继承:

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

实例化:

创建一个类的实例,类的具体对象。

方法:

类中定义的函数。

对象:

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

1.2 代码实例

# -*- coding: utf-8 -*-

"""

1、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。

2、局部变量:在函数内、在class的方法内(未加self修饰的) ,这就是局部变量

3、静态变量:在class内的,但不在class的方法内的,这就是静态变量

4、实例变量:在class的方法内的,用self修饰的变量,这就是实例变量

"""

Global_Variable = "我是全局变量"

class ExampleClass(object):

Class_static_variable = "我是类静态变量" # 静态变量

def __init__(self, Instance_Variable): # 构造函数,sel代表对象,有Instance_Variable属性

self.Instance_Variable = Instance_Variable # 实例变量

def study_example(self):

Local_variable = "我是一个局部变量" # 局部变量

print(Local_variable) # 输出局部变量

print(self.Instance_Variable) # 输出实例变量

class ChlidExample(ExampleClass):

def __init__(self, Instance_Variable, Chlid_Variable):

ExampleClass.__init__(self, Instance_Variable) # 初始化父类实例变量

self.Chlid_Variable = Chlid_Variable

def test(self):

print("学习 python的面向对象,了解变量是必须的,我是孩子变量 {},我是继承变量:{}".format(self.Chlid_Variable, self.Instance_Variable))

Instance_Variable = "我是用来测试实例变量的"

Chlid_Variable = "我是用来测试局部变量的 "

study = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study.study_example() # 子类调用父类方法

study_child = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study_child.test() # 子类调用子类方法

复制代码

二、面向对象三大特性解析

2.1 封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处

从某处调用被封装的内容

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

def Cat(self): # 创建类中的方法

print(self.name)

info = Animal('dahuang') # 封装到对象 info

print(info.name) # 直接调用

info.Dog() # self 间接调用

复制代码

2.2 继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def eat(self): # 创建类中的方法

print("%s吃 "%self.name)

def drink(self): # 创建类中的方法

print("%s喝"%self.name)

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("汪汪叫")

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name #

def cry(self):

print("喵喵叫")

child = Dog('邻居家的猫') # 封装到子类对象 info

child.drink() # 子类调用父类的方法

复制代码

2.3 多态

多态,字面理解为多种形态,没错,就是一个方法能表现出不同的形态。

同一操作(方法)作用于不同的对象,可以有不同的解释,产生不同的结果,而无须明确知道这个子类实际上是什么。将其上升到父类与子类的层面时,就是父类的引用指向了子类的对象。

前面所讲的封装和继承都是为多态服务的

然而, Python属于鸭子类型,大意是:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

python中的鸭子类型允许我们使用任何提供所需方法的对象,而不需要迫使它成为一个子类。

多态三大前提:

要有继承;

重写;

父类引用指向子类对象。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("%s汪汪叫" % self.name)

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name

def cry(self):

print("%s喵喵叫" % self.name)

def DuoTai(child):

print(child.cry())

child1 = Dog('邻居家的狗') # 封装到子类对象 info

DuoTai(child1) # 多态展示Cry方法,重写

child2 = Cat('邻居家的猫') # 封装到子类对象 info

DuoTai(child2) # 多态展示Cry方法, 重写

复制代码

三、进阶

3.1 基础重载方法

3.2 下划线说明

foo:

定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。

_foo:

以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

_ _ foo:

双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解相关推荐

  1. python 类 实例_Python类的实例详解

    类(class)是一个用户自定义类型,开发者可以将其实例化以获得实例(instance),实例表示这种类型的对象.在Python中,类就是对象,开发者可以像对其他对象那样处理函数,可以在调用函数时传递 ...

  2. python爬豆瓣电视剧_python requests库爬取豆瓣电视剧数据并保存到本地详解

    首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构: https://movie.douban.com/j/search_subject ...

  3. python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  4. python内置函数调用_Python中函数的基本定义与调用及内置函数详解

    前言 函数function是python编程核心内容之一,也是比较重要的一块.首先我们要了解Python函数的基本定义: 函数是什么? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有 ...

  5. python100例详解-Python类和实例详解

    可以看到,变量bart指向的就是一个Student的实例,后面的0x10a67a590是内存地址,每个object的地址都不一样,而Student本身则是一个类. 可以自由地给一个实例变量绑定属性,比 ...

  6. 精品,全网最详细-软件测试技术自动化测试总结,最屌详解看了默默卷起来

    目录:导读 一.自动化测试 二.自动化测试的意义 三.手工测试的局限性 四.自动化测试带来的好处 五.自动化测试的前提条件 1.需求变动不频繁 2.项目周期足够长 3.自动化测试脚本可重复使用 4.手 ...

  7. python 经典脚本文件_Python3.5文件读与写操作经典实例详解

    本文实例讲述了Python3.5文件读与写操作.分享给大家供大家参考,具体如下: 1.文件操作的基本流程: (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 ...

  8. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  9. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

最新文章

  1. AI 复活已故漫画家手冢治虫,出版新作续写传奇
  2. 软件配置文件如何读写
  3. java 文件crc校验_JavaCRC校验原理
  4. SpringBoot+Jquery实现前后端数据交互
  5. linux blender骨骼绑定,在Linux系统中安装开源3D创建套件Blender的方法
  6. laravel框架中文手册_node.js 后端框架star 排名 2020年11月更新,fastify 超 egg
  7. 信息学奥赛一本通C++语言——1007:计算(a+b)×c的值
  8. wdatepicker不展示秒_十一出游去哪里?苏州人都不一定知道的地方!
  9. Linux的基本命令符
  10. mysql左连接_面试考MySQL性能优化,一个问题就干趴下了!
  11. 在表达式 T(n) = 2T(n/2) + O(1) 与 T(1) = O(1) 中,T(n) 的时间复杂度为多少?
  12. WebLogic—发布Web项目
  13. vcpkg编译库位数总结
  14. 小学数学计算机按键名称,数学计算器
  15. 浏览器怎么导入导出|删除书签,方法步骤来咯
  16. c语言编程矩阵范数,矩阵2范数计算 这个二阶矩阵的二范数怎么
  17. 【快速迭代】【原型开发】
  18. 移动端html尺寸,移动端页面的三种尺寸
  19. Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
  20. 解决pip install d2l失败的问题

热门文章

  1. java if emun_关于java:Enum与If-else
  2. php生日验证,PHP验证生日
  3. 网口监视报文工具_真是神器!这款网络排查工具!
  4. 微型计算机主机箱内的所有部件均由大规模,2012年自考《计算机应用基础》模拟试题...
  5. PHP服务器端语言是什么意思,PHP作为服务器端语言,有哪些优点?
  6. Win10 C盘空间越来越小怎么办
  7. static,构造器,执行顺序
  8. spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚
  9. 简单地使用webpack进行打包,一些常见打包错误
  10. 关于比较器Comparator排序时间的问题