博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 面向对象
阅读量:7059 次
发布时间:2019-06-28

本文共 1957 字,大约阅读时间需要 6 分钟。

面向对象

面向对象编程是一种编程方式

除了这个,还有为了实现某些功能的面向过程编程

面向过程相比于面向对象

优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

想要了解面向对象编程,就应该先了解对象是什么

对python来说,万物皆对象

举个例子,人类,把人归于一,那么具体到某个人,这个人就是人这个类的对象

把一类东西的一些共有的抽象的东西摘出来,把有这些特定属性的东西归于一起就是一个

而从这个类中找出一个指定的东西,也就是对象的过程就是实例化

面对对象编程:

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,

面向对象的程序一旦开始就由对象之间的交互解决问题谁也无法预测最终结果。

现在用一段代码在具体认识一下类和对象

比如警察,小偷和平民  这三个都是人,可以归于人类

然后在从人身上抽象出属性,比如 每个人都有名字,都有年龄,都有性别,这些就是属性

class Human:      #用class创建一个类,Human类(人类)    def __init__(self,name,age,sex): #抽象的人的属性,名字,年龄,性别        self.name = name        self.age = age        self.sex = sexjingcha = Human('警察',35,'男')  #这里就是实例化,创建一个警察,设定名字,年龄,性别xiaotou = Human('小偷',25,'女')  #创建一个小偷,设定名字,年龄,性别pingmin = Human('平民',22,'女')  #创建一个平民,设定名字,年龄,性别print(jingcha,'这个就是警察啦')print(xiaotou,'这个就是小偷啦')print(pingmin,'这个就是平民啦')

<__main__.Human object at 0x0000027E78BF82E8> 这个就是警察啦

<__main__.Human object at 0x0000027E78CBB978> 这个就是小偷啦
<__main__.Human object at 0x0000027E78CA46D8> 这个就是平民啦

运行后发现打印出的这串自己不认识怎么办,没关系儿,这些其实是内存地址,换种方式看看

print(jingcha.name) #查看他的名字print(jingcha.age)  #查看他的年龄print(jingcha.sex)  #查看他的性别

警察

35

这些被查看到的东西,就是这个对象的属性了,当然 你也不可能查看到一个他没有的属性

这些就是类 对象 属性 实例化

类中的方法

现在类和对象都已经有了,那么说这些对象能不能做些什么呢

比如警察可以抓小偷,小偷逃跑

class Police:   #创建一个警察类    def __init__(self,name,age,sex):   #属性有姓名,年龄,性别        self.name = name        self.age = age        self.sex = sex    def attack(self,Thief):     #创建一个方法,实现警察抓小偷        print('%s抓%s,%s被吓跑了,但是%s追了上去'%(self.name,Thief.name,Thief.name,self.name))class Thief:    #创建一个小偷类    def __init__(self,name,age,sex):   #属性有姓名,年龄,性别        self.name = name        self.age = age        self.sex = sexjing = Police('警',34,'男')   #实例化一个警察tou = Thief('偷',23,'男')     #实例化一个小偷jing.attack(tou)     #用jing调用抓小偷方法,并把tou作为参数传进去

警抓偷,偷被吓跑了,但是警追了上去

这个就是类里的方法

同时也发现了

对象能做的:

查看属性

调用方法

类能做的:

实例化

创建方法

转载于:https://www.cnblogs.com/GrandDarkness/p/8311141.html

你可能感兴趣的文章
Analysis Service Tabular Model #002 Analysis services 的结构:一种产品 两个模型
查看>>
PostgreSQL 的 pl/pgsql 的 cannot begin/end transactions in PL/pgSQL错误
查看>>
多线程编程之三——线程间通讯
查看>>
vs快捷键
查看>>
Oracle DBA常用查询
查看>>
修复Telerik reporting 在网页中使用时的样式
查看>>
Hackers’ Crackdown-----UVA11825-----DP+状态压缩
查看>>
Waiting Processed Cancelable ShowDialog
查看>>
[leetcode]Spiral Matrix
查看>>
hdu 1232 畅通工程(并查集)
查看>>
在github上写个人简历——先弄个主页
查看>>
用jquery实现遮罩层
查看>>
POJ 2229 Sumsets(技巧题, 背包变形)
查看>>
啥时候js单元测试变的重要起来?
查看>>
使用strtotime和mktime时参数为0时返回1999-11-30的时间戳问题
查看>>
php mysql 扩展安装
查看>>
Thrift架构~目录
查看>>
c++ 调用matlab程序
查看>>
一个cocoapods问题的解决,希望能帮助到遇到相似情况的人
查看>>
AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取...
查看>>