Python类基础知识(面向对象基础)
首先
我们需要了解
- 面向过程是什么
- 面向对象是什么
- 我们为什么需要使用面向对象
面向过程:根据业务逻辑从上到下写垒代码
面向对象:根据代码对函数进行分类和封装
区别:解决问题的逻辑不同,但是都能解决问题。新手在一开始可能比较习惯使用面向过程的编程,因为比较容易理解;面向对象在一开始理解起来是有一定的难度的,但是在熟练了之后就会爱上这种方式的编程
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
创建类和对象
面向对象编程是一种编程方式,此编程方式需要使用'类'和'对象'来实现,所以面向对象也可以说是对'类'和'对象'的使用
- 类 即模板,模板里面有很多函数,函数里实现所需要的功能
- 对象 即实例,通过实例对象可以之执行类中的函数
下
`**创建一个类**
class Foo(object):
def Bar(self):
print('in the BAR')
def Hello(self, name):
print(i am %s' %name)
**#根据类FOO实例对象obj**
obj = FOO() #实例化
obj.BAR() #执行BAR方法
obj.Hello('miao') #执行Hello方法`
面向对象的三大特性
##封装 继承 多态
一、封装
封装,也就是将内容封装到某个地方,然后再去调用

self 是一个形式参数,
当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1
当执行 obj2 = Foo('alex', 78 ) 时,self 等于 obj2
所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。

二、继承
继承,面向对象中的继承和现实生活中继承相同,即:子可以继承父的内容
下面代码简单演示类的继承
class Father(object):
def __init__(self,home):
self.home = home
def tell(self):
print('My home is %s ' %self.home)
class Son(Father):
def __init__(self,name,wife,home):
self.wife = wife
self.home = home
def xifu(self):
print('xifu is %s'%self.wife)
s1=Son('xiaoming','mazi','bieshu')
s1.xifu()
s1.tell()
父类是Father,在创建子类的时候直接将Father当做参数传给Son类
调用武sir的一张图可以看的更加清晰:
注:父类基类 子类派生类 只是叫法不同罢了

然而刚在我们进行的是单继承,多个继承的时候该怎么做呢
思考:
- 怎么继承多个类呢
- 如果继承的多个类中定义了相同的方法,那么会调用哪一个
1、Python可以继承多个类,class(A,B)这样既可
2、Python继承多个类时,寻找方法的方式有两种,分别是:深度优先(经典类)、广度优先(新式类)

从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。


在日后的写法中我们默认使用新式类就好
三、多态
多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
总结的话就是接口的重用
#Author : Ziang Chen
# _*_coding:utf-8_*_
class Animal(object):
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
def talk(self):
print('%s: 喵喵喵!' % self.name)
class Dog(Animal):
def talk(self):
print('%s: 汪!汪!汪!' % self.name)
def func(obj): # 一个接口,多种形态
obj.talk()
c1 = Cat('小晴')
d1 = Dog('李磊')
func(c1)
func(d1)
Python类基础知识(面向对象基础)的更多相关文章
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- Linux基础知识与基础命令
Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...
- 周末班:Python基础之面向对象基础
面向对象基础 面向对象和面向过程 编程思想是什么,就是用代码解决现实生活中问题的思路. 面向过程 核心点在过程二字,过程指的是解决问题的步骤,说白了就是先做什么再干什么.这种解决问题的思路就好比是工厂 ...
- Python 编程核心知识体系-基础|数据类型|控制流(一)
Python知识体系思维导图: 基础知识 数据类型 1.序列 2.字符串 3.列表和元组 4.字典和集合 循环 & 判断
- MYSQL、PHP基础、面向对象基础简单复习总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- java线程基础知识----线程基础知识
不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...
- day63:Linux:nginx基础知识&nginx基础模块
目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...
- 这些C++基础知识的基础知识你都学会了吗?
一.C++基础知识 新的数据类型 C语言中的数据类型 C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码: 可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...
- python3 速查参考- python基础 8 -> 面向对象基础:类的创建与基础使用,类属性,property、类方法、静态方法、常用知识点概念(封装、继承等等见下一章)
基础概念 1.速查笔记: #-- 最普通的类 class C1(C2, C3): spam = 42 # 数据属性 def __init__(self, name): # 函数属性:构造函数 self ...
随机推荐
- java压缩 GZIP进行简单压缩,ZIP进行多文件保存
java压缩 GZIP进行简单压缩,ZIP进行多文件保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6 ...
- JSONObject和JSONArray(json-lib-2.4)的基本用法
json-lib-2.4是一个用于JSON和java对象间转换的第三方包,其jar和依赖包下载地址在:https://files.cnblogs.com/files/xiandedanteng/jso ...
- easyui required 提交验证
使用easyui时,对于提交验证,不不过在标签属性中加入data-options=required:true这句话这么来的.还须要另外加上才写东西能够把验证完整实现 1.设置from的属性 <f ...
- 使用OpenSSL生成CSR文件,并申请全球通用SSL证书
http://www.openssl.org 上只有OpenSSL的原代码下载,为了方便Windows用户使用OpenSSL,我们特地为您准备了OpenSSL 0.9.8.a for win32的可执 ...
- measureChildren的工作原理
无论是在重写View还是ViewGroup的时候,尤其是ViewGrop的时候,往往不可避免的重写onMeasure方法,我们一定会调用setMeasuredDimension()将测量好的宽高值传递 ...
- 【Excle】二维表转化为一维表
现在我们想做如下操作: 想把表1的数据转化为表2的数据,那么我们只需要如下这段代码即可解决需求 Sub 转置() Dim i%, arr arr = Application.InputBox(&quo ...
- windows系统下GCC的安装与配置
刚开始看 C++ Primer,看到编译器的部分,自己搜了搜怎么搭建GCC,搜到以下内容,复制过来留个印象: windows系统下GCC的安装方法,以及一些环境变量的配置,如果对GCC不是很清楚,关于 ...
- 《深入PHP:面向对象、模式与实践》(二)
第4章 高级特性 本章内容提要: 静态属性和方法:通过类而不是对象来访问数据和功能 抽象类和接口:设计和实现分离 错误处理:异常 Final类和方法:限制继承 拦截器方法:自动委托 析构方法:对象销毁 ...
- RecycleView实现多布局可展开列表
代码地址如下:http://www.demodashi.com/demo/13193.html 前言 在开发的时候,我们不免会遇到这么一种数据展示,该数据有以下特征: 数据要以列表形式展示 每条数据要 ...
- WPF开源框架项目
好久博客未更新新博文了,今天介绍一个WPF开源框架MaterialDesignInXamlToolkit废话不多说先让我们来看看框架得几张截图 让我们一起来看看源代码得结构如下图 接下我们运行代码看看 ...