一、面向对象和面向过程

  面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思 想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数

1、面向过程编程   

  角色是执行者。把一个项目按照一定的顺序,从头到尾一步步做下去。只要前面有一个步骤变了,后面的就也要变,不易维护。

2、面向对象编程   

  角色是指挥者。把一个项目分成一个个小部分,每一个部分负责一方面功能,最由这些部分组合而成为一个整体。面向对象的思想适合多人的分工合作。   

  面向对象是包含面向过程的思路的,比如定义类中的方法,每一个小方法小功能中还是面向过程的思想。   

  函数编程与OOP的主要区别就是OOP可以使程序更加容易扩展和易更改。

二、类和实例

  面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

  类:一个种类,一个模型。汽车模型。一个类就是对一类拥有

  对象:指具体的东西,模型造出来的东西叫做对象。

  实例:实例和对象是一样的。

  实例化:实例化就是造东西的这个过程。

  属性:类里面的一个变量。有类变量和实例变量,类变量是类在定义的时候就有的,实例变量是在实例化的时候才产生的变量。举个例子来说明类变量与实例变量

   类变量:公共的变量,每个实例都可以用。直接通过类名.xxx来进行修改,不需要实例化

  以Person类为例,在Python中,定义 类是通过class关键字:

class Person():  #经典类pass
class Person1(object): #新式类pass
#类名首字母都大写
#在python3里经典类和新式类没有任何区别,均是广度优先
#python2中经典类在多继承的时候是深度优先,新式类是广度优先

  class后面紧接着是类名,即Person,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

  定义好了Person类,那么就可以根据Person类造出person实例

class Person:  # 经典类country='China'  #类属性def __init__(self, name):  # __init__构造函数,非必须self.name = name # 实例属性self.nose = 2  # 鼻子  #类中定义的变量叫属性self.face = 3  # 脸self.head = 10  # 脑子self.wing = 4  # 翅膀print('开始造人。。。')def driver(self):  # 类里面定义变量一定要叫self,不然会报错print('老司机,开车非常稳')self.eat()  # 调用类里面的函数def fly(self):print('%s 在飞。。' % self.name)# 获取类里面的变量def eat(self):print('%s 吃火锅,吃小龙虾,喝啤酒' % self.name)# 类在用到时候,首先必须实例化
fengfeng = Person('fengfeng') #实例化,fengfeng就是Person这个类的实例
#构造函数里面制定了必须传name,在实例化的时候就要把name传进去
#实例化需要变量接收,不然实例化结束,实例销毁
print(fengfeng.face)#调用实例属性
fengfeng.eat()#调用实例方法
fengfeng.fly()#调用实例方法
fengfeng.driver()

class Person:country = 'China'#类属性,公共的变量,在外面都可以用def __init__(self,name):self.name = name,#实例属性,每个实例name不一样# self.country = 'China'#若每个对象都会存一个一样country,比较浪费内存,变为类变量
feng = Person('小白')
print(feng.name)
feng.age = 18 #为实例新增实例属性
print(feng.age)
feng.country = 'USA'#不会改变类变量,只影响实例里的变量
print(feng.country)#USA
FF =Person('小红')
print(FF.country)#China
FF.country = 'Jap'#类变量直接通过类名.xxx来进行修改,不需要实例化
print(feng.country)#USA,Amy的实例化发生在修改类变量之前,所以不再改变
print(FF.country)#Jap
FGF = Person('小兰')
print(FGF.country)#China

注:注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了__init__方法,在创建实   例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

  和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。

转载于:https://www.cnblogs.com/fenggf/p/9078225.html

Python3学习笔记-面向对象相关推荐

  1. python基础第三章选择结构答案-python3 学习笔记(二)选择结构、循环结构

    python3 学习笔记 python 优雅 明确 简单 1.选择结构 (1)简单判断 if else 使用格式: if  条件: 表达式1 else: 表达式2 (2)多条件判断 elif 使用格式 ...

  2. Python3学习笔记之-学习基础(第三篇)

    Python3学习笔记之-学习基础(第三篇) 文章目录 目录 Python3学习笔记之-学习基础(第三篇) 文章目录 一.循环 1.for循环 2.while循环 3.break,continue 二 ...

  3. A Byte of Python3 学习笔记

    A Byte of Python3 学习笔记 第七章 控制流 1.if语句(带输入函数) 2.while语句 3.for循环 4.break.continue.return的区别 第八章 函数 8.1 ...

  4. Python3 学习笔记

    Python3 学习笔记 1.基础语法 1.1 字符串操作 title() 将单词首字母改为大写 upper() 所有字母改为大写 lower() 所有字母改为小写 str1+str2 字符串通过'+ ...

  5. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

  6. python3学习笔记(9)_closure

    1 #python 学习笔记 2017/07/13 2 # !/usr/bin/env python3 3 # -*- conding:utf-8 -*- 4 5 #从高阶函数的定义,我们可以知道,把 ...

  7. 笨办法学python3 学习笔记 习题43 基本的面向对象分析和设计

    习题43 基本的面向对象分析和设计 通过面向对象编程(OOP)构建一些东西的流程(常用)(自顶向下) 把要解决的问题写下来,或者画出来. 将第一条中的关键概念提取出来并加以研究. 创建一个类层次结构和 ...

  8. python3学习笔记:3.其他部分

    整理文档发现两年前学习paython3的笔记.当时工作有需要结果也没用上,现在忘的差不多了,在这里整理下. 按 菜鸟编程python3教程编写的demo.链接 这里主要是以前记录的一些资料链接 Pyt ...

  9. Python3学习笔记(一):基础语法

    Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交 ...

最新文章

  1. 博客网站没落的两个原因
  2. 从零开始学习Sencha Touch MVC应用之七
  3. 高斯消元处理无解|多解情况 poj1830
  4. Leetcode 剑指 Offer 53 - I. 在排序数组中查找数字 I (每日一题 20210928)
  5. 数据结构34:二叉树前序遍历、中序遍历和后序遍历
  6. Java IO篇:什么是 Reactor 网络模型?
  7. 嵌入式linux系统中设备驱动程序
  8. 一些网站github等无法连接服务器的解决办法
  9. 初学者易上手的SSH-hibernate01环境搭建
  10. 【算法笔记+BZOJ3676】回文串(回文树/回文自动机模版题)
  11. 安装VMware-打开时显示文件包含病毒
  12. ionic android 证书,Ionic 5/Angular Android和iOS 指纹认证
  13. 试图通俗地讲一下庞加莱猜想是怎么回事
  14. CVPR 2022 | 基于密度与深度分解的自增强非成对图像去雾
  15. Counting Stars 全中国最准确的翻译!
  16. 如何快速去除图片上的水印
  17. office2007之PPT模版更换与应用
  18. fegin get请求调用报错
  19. 基于PHP的潮流服装商城系统
  20. 计算机等级报错等级怎么办,计算机等级考试怎么报两门(计算机等级考试报错了怎么办)...

热门文章

  1. 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...
  2. linux架构接口层教程,在LINUX平台上进行成功实现RIL层功能和框架层应用
  3. php上传过滤,编写PHP脚本过滤用户上传的图片_PHP
  4. 怎么装python的keras库_matlab调用keras深度学习模型(环境搭建)
  5. r语言 调用c windows,R:window()函数
  6. matlab 基础知识查漏
  7. 时序分析中的关键术语
  8. 解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)
  9. [AI开发]基于深度学习的视频多目标跟踪实现
  10. 【git效率篇】在window上面的git bash 配置永久别名 快捷方式