编程范式:

编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 ,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。

两种最重要的编程范式:面向过程编程、面向对象编程。

面向过程编程:

程序从上到下一步步执行,从头到尾的解决问题 。

基本设计思路:程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再继续分解,直到小问题足够简单到可以在一个小步骤范围内解决。

面向对象编程

OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述。

为什么使用OOP?

1、可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率;

2、可以使其他人更加容易理解代码逻辑,从而使团队开发变得更从容。

* 从效率上来讲,面向过程是走,面向对象是开车。

面向对象的特性:

封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式主要有2类:实现继承、接口继承。

实现继承:使用基类的属性和方法而无需额外编码的能力;

接口继承:仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构父类方法);

* 注:在考虑使用继承时,两个类之间的关系应该是“属于”关系。例如,“学生”是一个人,“老师” 也是一个人,因此这两个类都可以继承 “人”这个 类。但是 “腿”这个类却不能继承 “人”这个类,因为“腿”并不是一个人。

抽象类仅定义由子类创建的一般属性和方法。

OOP开发范式大致为:划分对象→抽象类→将类组织成层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

多态:允许你将父对象设置成为,与一个或更多其子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

简单讲就是:允许将子类类型的指针赋值给父类类型的指针。

多态的作用是什么?

我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

总之就是,一个接口,多种实现。

Pyhon 很多语法都是支持多态的,比如 len(),sorted(), 你给len传字符串就返回字符串的长度,传列表就返回列表长度。

实例:

类的定义

classRole:

str= '这是一个类变量' #类的变量

def __init__(self,name, role, weapon, life_value=100, money=15000):#构造函数

#在实例化时,做一些类初始化的工作:传参

#self 可以理解为传入的实例化变量r1,r2

#若类的变量名和实例变量名相同,默认取实例变量

self.name = name #实例变量(静态属性),作用域就是实例本身

self.role =role

self.weapon=weapon

self.life_value=life_value

self.money=moneydef shot(self): #类的方法(动态属性)

print("正在开枪!")defgot_shot(self):print("%s中枪了。。"%self.name)defbuy_gun(self, gun_name):print("%s买了%s" %(self.name,gun_name))print(Role.str) #直接打印类变量

r1 = Role('goodman', '警察', 'AK47') #生成一个警察角色。把一个类变成一个具体对象的过程:实例化(初始化一个类,创建了一个对象)

r2 = Role('badman', '恐怖分子', 'm41') #生成一个恐怖分子角色

r1.buy_gun('AK47') #警察买了一把AK47

r2.got_shot() #警察中枪了

#获取实例属性,获取警察的名字

print(r1.name)#修改实例属性

r1.name='修改了警察的名字'

print(r1.name)#添加实例属性,给警察添加一个性别属性

r1.sex = '男' #添加属性

print(r1.sex)#删除实例属性,删除警察的性别属性

del r1.name

析构函数__del__ :在实例释放或销毁的时候,自动执行的方法。通常用于做一些首尾工作(如:关闭数据库连接,关闭打开的临时文件等)。

classPerson:

cn='中国'

def __init__(self,name,age):

self.name=name

self.age=agedefdofunc(self):print('%s做了一些事'%self.name)def __del__(self):print('%s 执行了程序!'%self.name)

p1= Person('simple',23)

私有方法,私有属性(变量):名称前面加两个“_”

def __syfun(self): # 私有方法

self.__age = age # 定义私有属性

classPerson:

cn='中国'

def __init__(self,name,age=25):

self.name=name

self.__age = age #定义私有属性

defdofunc(self):print('%s做了一些事'%self.name)def show_age(self): #获取私有属性

print('%s的age是:%s'%(self.name,self.__age))def __syfun(self):print('这是一个私有方法。')def __del__(self):print('%s 执行了程序!'%self.name)

p1= Person('simple')#print(p1.__age) # 报错:'Person' object has no attribute '__age'

print(p1.show_age())#print(p1.__syfun) # 报错:'Person' object has no attribute '__syfun'

python是个啥-初识python: 面向对象是个啥?相关推荐

  1. 孤荷凌寒自学python第三十八天初识python的线程控制

    孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看着 ...

  2. python输入姓名 性别身高_孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  3. python自学第8天字典_孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  4. 我的python之路一初识python的自我理解

    初识python的自我理解 关于python的自我简记 我认识的python 怎么开始python的学习和使用 我尝试过的几个python学习的常用组合 关于python的自我简记 初识python是 ...

  5. Python学习之路—初识Python

    如果让你从数百种的编程语言中选择一个入门语言? 你会选择哪一个?是应用率最高.长期霸占排行榜的常青藤 Java? 是易于上手,难以精通的 C? 还是在游戏和工具领域仍占主流地位的 C++? 亦或是占据 ...

  6. 零基础入门进阶python导学(初识python)-01

    文章目录 python导学 python版本 基础语法 面向对象 python特点 pythonic 易于学习 万金油 1.爬虫 2.大数据与数据分析(Spark) 3.自动化运维.自动化测试 4.W ...

  7. 用python画竹子_初识Python

    一:编程语言的分类 (1)机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合. (2)汇编语言 汇编语言采用的是英文缩写,标识符更容易识别和记忆,它同样需要编程者将每一步 ...

  8. 0.python开发[1]:初识python

    一.Python 和 C .Java.C#对比 C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指 令控制CPU工作. 其他语言: 代码编译得到字节码 ,虚拟机执行字节码并转换成机器码 ...

  9. python学习day1:初识python

    一.什么是Python 1.Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 2.Python源程序文件通 ...

最新文章

  1. 双宋喜结连理过程可以通过python爬虫Aispider 几行代码就能搞定!
  2. 让delphi程序不受WINDOWS日期格式的影响
  3. Develop chrome extension study
  4. Android Activtity Security
  5. Extjs日期格式问题
  6. MySQL数据库篇之初识数据库
  7. The size of tensor a (4) must match the size of tensor b (3) at non-singletonThe size of
  8. 15款精美的 WordPress 电子商务网站模板
  9. 当下,所有工程师都要具备技术变现思考和能力【赢在CSDN】
  10. Android Studio(7)---从模板添加代码
  11. java数据结构图_java总结数据结构和算法
  12. 各国货币json文件
  13. 近中期3D编程研究目标
  14. Pollard-rho的质因数分解
  15. excel取消隐藏_这个毁人无数的Excel黑洞,却成就一批最牛X的高手
  16. Dubbo之@Adaptive
  17. 未来科技感UI界面设计欣赏
  18. 【python】2行代码实现gif动图压缩(pygifsicle)
  19. Android自定义相机
  20. 网络代理神器-非常代理

热门文章

  1. [原创] Matlab 指派问题模型代码
  2. Linux时间子系统之(一):时间的基本概念【转】
  3. apple wwdc resource
  4. Poj 1112 Team Them Up!
  5. javascript中常用的
  6. 大图剪切工具,大图分割工具
  7. 记录下openstack部署和使用时遇到的一些问题
  8. difftime(转)
  9. Jquery高亮显示文本中重要的关键字
  10. 工作流引擎的硬功夫之1-表单自定义