python记录_day15 面向对象初识
一、面向过程和面向对象
1、面向过程
以我为中心,做一件事先干什么,在干什么,后干什么,有一套清楚完整的流程。核心是“过程”。
优点:将要解决的问题流程化, 编写相对简单
缺点:可扩展性差
2、面向对象
以对象为中心,做一件事不需要你清楚怎么做,你创建能做这件事的对象即可。对象是具体的事物,它能实现一定的功能。
优点:可扩展性强
缺点:编程的复杂度高于面向过程
二、面向对象如何编写
在现实世界中,是先有对象,然后后归类;在代码中,是先定义类,然后再创建对象
#定义类 格式:
class 类名:
def __init__(self,参数): #这是类的构造方法,在创建对象的时候会自动执行;self指当前正在创建的对象,由python自动传值
pass
def 方法名(self,参数): #类中自定义的方法
pass
#创建对象:
变量 = 类名(参数)
# 访问对象的属性信息
对象.属性
# 方法的访问:
对象.方法()
#定义computer类
class Computer:
def __init__(self,pinpai,cpu):
self.pinpai = pinpai
self.cpu = cpu def playgame(self,game):
print("使用%s电脑打%s游戏" % (self.pinpai, game))
#创建具体对象c
c = Computer("lenovo", "A8")
print(c.pinpai)
c.playgame("lol") #创建对象c2
c2 = Computer("xiaomi", "i7")
print(c2.pinpai)
c2.playgame("吃鸡")
!!!注意:
对类与对象关系的理解: 类通过实例化创建一个对象,每个对象都是独立的。
点 . 可以理解为“的”,或者“调用” 比如 c.pinpai 就是对象c的品牌;c.playgame() 对象c调用playgame方法
三、面向对象和面向过程大PK
那么面向对象和面向过程到底哪个好?
具体问题,具体分析。 没有绝对的好和不好。 这点 要格外注意。
对于大型项目,更适合用面向对象;对于小型脚本,更适合用面向过程
四、面向对象三大特征
(一)封装
封装是一个很宽泛的概念,你写一个函数,可以称为封装,对象,打包成模块也都属于封装的思想。
在面向对象思想中,把一些看似无关紧要的内容组合到一起统一进行存储和使用,这就是封装。
对属性封装
self.xxx = xxxx
对方法封装
def 方法名():
pass
(二)继承
继承格式
class 子类名(父类1,父类2):
pass
子类可以自动拥有父类中除了私有内容外的其他所有内容
(三)多态
同一个对象多种形态
class Animal:
def chi(self):
print("动物就知道吃")
class Pig(Animal):
def chi(self):
print("猪在吃")
class Haski(Animal):
def chi(self):
print("哈士奇在吃")
class Alasika(Animal):
def chi(self):
print("阿拉斯加在吃") class SiYangYuan:
def yanng_animal(self, ani): #本来这里的参数要的是Animal类的对象,但是传入Pig类,Haski类,Alasika类的对象也可以,这就是多态
ani.chi() zhu = Pig()
erha = Haski()
ala = Alasika()
alex = SiYangYuan()
alex.yanng_animal(zhu)
alex.yanng_animal(erha)
alex.yanng_animal(ala)
多态的好处:
程序具有超高的可扩展性。
面向对象思想的核心与灵魂。
python自带多态,我们一直在用多态,但是感觉并不明显。 比如. 我们创建一个变量a = 10 , 我们知道此时a是整数类型。但是我们可以通过程序让a = "alex", 这时, a又变成了字符串类型。
python记录_day15 面向对象初识的更多相关文章
- python递归 及 面向对象初识及编程思想
递归 及 面向对象初识及编程思想 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...
- Python 基础之面向对象初识与类的封装
一.面向对象类的初识 1.类的定义 #三种方式:#1.class MyClass: pass #2.推荐class MyClass(): pass #3.class MyClass(obj ...
- python进阶之面向对象初识
面向对象 不同于面向过程的编程思想,面向对象是一种将程序抽象为一个个对象的编程思想,能更好的处理现实世界到的一些复杂问题. 通过下面的例子来初步了解面向对象的编程方式. class Person: # ...
- python基础学习笔记——面向对象初识
面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...
- Python中面向对象初识到进阶
面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...
- python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象
https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...
- python之面向对象初识
一.面向对象初识 1.结构上 面向对象分成两部分:属性.方法 class A: name = 'xiaoming' # 静态属性.静态变量.静态字段. def func1(self): # 函数.动态 ...
- python基础(17)继承类和面向对象初识
1.继承类 class Lm: money = 1000000 house = 5 def driver(self): print('会开车') class Mcb(Lm): def about_me ...
随机推荐
- MUSIC分辨率与克拉美罗下界的关系
https://www.cnblogs.com/rubbninja/p/4512765.html
- Google advertiser api开发概述——批量处理
批处理 大多数服务都提供同步 API,要求您发出请求然后等待响应,但 BatchJobService 允许您对多项服务执行批量操作,而无需等待操作完成. 与各服务的特定 mutate 操作不同,Bat ...
- localhost 和 127.0.0.1 有什么区别?
另外,主要是好友为什么两个一个有 favicon 一个没有? 127.0.0.1和localhost_180104074532.png
- 3、Python迭代器、列表解析及生成器(0530)
1.动态语言 sys.getrefcount() //查看对象的引用计数 增加对象的引用计数场景 对象创建时:以赋值的方式,创建变量名的同时就会创建变量 将对象添加进容器时:类似list.app ...
- 前端面试总结 (转 0C°)
前端面试总结 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势. 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5.未来三到五 ...
- HashMap的实现原理-----哈希讲解
哈希,英文名Hash.他就像是一个隔壁家的孩子一样,伴随着码工们的成长.听到他们的名字,我们都觉得很高大上. 在写程序的时候,一般我们都是这样被教育的:这个事情搞不定?用哈希呀! 在面试的时候,一般是 ...
- JsonKey小写
System.Text.RegularExpressions.MatchCollection ms = System.Text.RegularExpressions.Regex.Matches(eca ...
- 【四】php 函数
一:函数 作用:为了分割那些能够独立完成有明确任务的代码,更易于阅读 调用函数:function_name(args1,args2...); args可以是任何一种php变量,包括数组或对象 函数名不 ...
- javascript 创建video元素
<!DOCTYPE html> <html> <body> <h3>演示如何创建 VIDEO 元素</h3> <p>请点击按钮来 ...
- django特殊的标签和过滤器
国际化标签和过滤器 Django还提供了一些模板标签和过滤器,用以控制模板中国际化的每个方面.它们允许对翻译,格式化和时区转换进行粒度控制. 1. i18n 此标签允许在模板中指定可翻译文本.要启用它 ...