本文实例讲述了Python面向对象思想与应用。分享给大家供大家参考,具体如下:

面向对象思想

1、面向对象的设计思想

面向对象是基于万物皆对象这个哲学观点。

2、面向对象和面向过程的区别

面向过程

在生活中:

它是一种看待问题的思维方式,在思考问题的时候,着眼问题是怎样一步一步解决的,然后亲力亲为去解决问题[类似于公司里的执行者]。

在程序中:

​ 代码是从上而下顺序执行,各个模块之间的关系尽可能简单,在功能上相对独立,程序的流程在写程序的时候就已经决定。

面向对象

在生活中:

它是另一种看待问题的方式,它着眼于找到一个具有特殊功能的个体,然后委托这个个体去帮你完成某件事.这更符合人类思考习惯的思想[指挥者]。

在程序中:

把数据以及对数据的操作方法放在一起,作为一个相互依存的整体–对象;

把同类的对象进行抽象出其共性,形成类;

类中大多数数据,只能用本类的方法进行处理;

类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信;

程序执行的流程由用户在使用的过程中决定;

使用面向对象思想进行开发,需要先找到具有所需功能的对象来使用,如果这个对象不存在,那么则需要创建这么一个具有所需功能的对象。

注意:面向对象只是一种思想,并不是一门编程语言。

区别总结

a. 都是看待问题的一种思维方式,都能解决问题;

b. 面向过程着眼于所有的事情亲力亲为;

c. 面向对象着眼于找到一个具有特殊功能的对象,委托这个对象实现你需要实现的功能。

python语言是面向对象的程序设计语言,类和对象是面向对象的核心。

类和对象

1、类和对象的概念

类:一个具有特殊功能的实体的集合[群体]。

对象:在一个类中,一个具有特殊功能的实体,能够帮忙解决特定的问题,对象通常也被称为实例。

两者之间的关系:类用于描述某一对象的共同特征,而对象则是类的具体存在。

举例:

学生 张三、李四

快递 顺丰、韵达

总结:

类与对象的关系:

a.类是对象的抽象,对象是类的具体体现。

b.类也是一种数据类型,只不过是自己定义的,类似与number,string等,它本身并不占用空间,但是它的实例[对象]是占用空间的。

2、类的定义

格式:

class 类名(object):

​ 类体

说明:

a.python中使用class关键字定义类;

b.类名只要是一个合法的标识符即可,命名规则遵循”大驼峰式命名”【每个单词的首字母大写】;

c.尽量使用单个或者多个有意义的单词连接而成

演示

# 一个简单的类的实例

class Person():

print("hello")

3、类的设计

只需要关心3样东西

1.事物名称[类名]: 如人类 (Person);

2.特征(属性): 如身高(height) 年龄(age)等 ——>名词;

3.行为(方法): 如跑(run) 说话(say) —————>动词。

类中的方法和属性

1、方法和属性的定义

生活中描述事物的无非就是描述事物的特征和行为。

python中用类来描述事物也是如此,前面已经定义了类,但是,如果只有类单独存在,没有任何意义,所以定义类其实就是定义类中的成员[成员变量和成员方法]。

在类中的变量我们称之为成员变量,在类中的方法我们称之为成员方法(函数)。

成员变量—>类具有的特征 例如:人—>身高,性别,体重。

成员方法 —>类具有的行为 例如人—>吃喝玩乐。

因此,拥有相同的(或者类似)属性和行为的对象都可以抽取出一个类。

class Persion():

#成员变量,初始值就是相当于默认值

name = ""

age = 0

height = 0

weight = 0

#成员方法

#在类的内部,使用def关键字来定义的一个方法

#注意:区别于普通方法,类中方法的参数必须包含参数self,且为第一个参数

#self代表类的实例(某个对象)

def run(self):

print("run")

def eat(self, food):

print("eat",food)

def sleep(self):

print("sleeping")

说明:定义了类,并在类中定义了成员变量和成员方法,但是成员变量和成员方法是如何使用的呢?

2、方法和属性的使用

2.1、实例化对象:

前面说过,对象是实实在在的个体,负责去完成某件指定的事情。

对象的创建的过程又被称作对象的实例化过程。

语法:

对象名 = 类名()

'''

实例化对象

格式: 对象名 = 类名()

注意: 没有参数的时候,小括号也不能省略

'''

#实例化一个对象

pre1 = Person()

print(pre1)

print(type(per1))

print(id(per1))

per2 = Person()

print(per2)

print(type(per2))

print(id(per2))

3、对象调用方法和属性

per = Preson()

'''

访问属性

格式:对象名.属性名

赋值:对象名.属性名 = 新值

'''

per.name = 'lili'

per.age = 18

per.height = 160

per.weight = 80

print(per.name, per.age, per.height, per.weight)

'''

访问方法

格式:对象名.方法名(参数列表)

'''

per.run()

per.eat("apple")

per.sleep()

#问题:目前来看Person创建的所有对象属性都是一样的

per2 = Person()

print(per2.age)

per3 = Person()

print(per3.age)

总结:

访问变量采用: 对象名.属性名;

访问方法采用: 对象名.方法名(参数列表)。

4、内存中的对象

per = Person()

说明:程序中定义Person类型的变量per实际是一个变量名,它被存放在栈内存中,它指向实际的Person对象,而真正的Person对象则存放在堆内存中。

综合练习:

第一天开学,介绍一下你自己其中包括姓名,年龄以及爱好

#学生类

class Student():

#特征:成员变量

self.name = ""

self.age = ""

self.hobby =""

def introduce(self,name, age, hobby):

print("大家好,我是%s,今年%d岁,爱好是%s"%(name,age, hobby))

def singsong(self):

print("娘子~啊哈")

def dance(self):

print("广场舞跳起来...")

def lie(self):

print("我家特别穷,我小时候就一直在放牛,只有几万头....")

# 类实例化

stu = Student()

# 成员方法调用

stu.introduce('ldc',18,'跑步')

stu.singsong()

stu.dance()

stu.lie()

输出:

大家好,我是ldc,今年18岁,爱好是跑步

娘子~啊哈

广场舞跳起来...

我家特别穷,我小时候就一直在放牛,只有几万头....

如何查看所有属性和方法

class Test():

def __init__(self,name):

self.name = name

def test(self):

print('testing...')

test = Test('测试')

# 查看所有属性和方法

list1 = dir(test)

# 检查实例是否有这个属性

print(hasattr(test, 'name'),hasattr(test, 'test'),hasattr(test, 'tt'))

# 设置属性值

setattr(test,'name','测试2')

# 获取属性值

print(getattr(test, 'name'))

输出:

True True False

测试2

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python面向对象思想与应用入门教程【类与对象】

本文地址: http://www.cppcns.com/jiaoben/python/256994.html

python面向对象类创建人物类包含姓名、职业_Python面向对象思想与应用入门教程【类与对象】...相关推荐

  1. python面向对象类创建人物类包含姓名、职业_python面向对象类

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  2. python如何判断字符串是否包含某些汉字_Python如何判断一个字符串是否包含指定子字符串...

    Python如何判断一个字符串是否包含指定字符串?本篇文章就给大家介绍Python判断一个字符串是否包含指定子串的3种方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 程序员在字 ...

  3. div不继承父类样式_Python编程思想(27):类的继承

    -----------支持作者请转发本文-----------李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要 ...

  4. python输入一个分数、约分后输出_Python中分数的相关使用教程

    你可能不需要经常处理分数,但当你需要时,Python的Fraction类会给你很大的帮助.在该指南中,我将提供一些有趣的实例,用于展示如何处理分数,突出显示一些很酷的功能. 1 基础 Fraction ...

  5. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结

    本文实例讲述了Python面向对象程序设计.分享给大家供大家参考,具体如下: 示例1: #encoding:utf-8 '''example 1 class test: def __init__(se ...

  6. Python中使用GoogleMaps API(包含Geocoding API,Places API Web Service )详细教程

    前言 业务需要根据经纬度获取该城市的邮政编码,需要通过调用GoogleMaps来搜索地点,来获取地点的详细信息.于是查阅了一些相关的资料,特意分享出来给大家参考参考. 涉及相关的资料: google官 ...

  7. python flask web开发 可视化开发_python web开发之——Flask入门教程

    一.安装python2.7(略) 1.Mac下使用python2.7 2.Windows下安装python2.7 从官网下载 双击python2.7,然后选择安装路径,一顿下一步就可以了. 设置环境变 ...

  8. python matplotlib模块教程_Python中的Matplotlib模块入门教程

    1 关于 Matplotlib 模块 Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric ...

  9. python gevent教程_Python的gevent框架的入门教程

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

最新文章

  1. 路易斯·罗森伯格与「群体智能」
  2. ReadResolve方法与序列化
  3. [LeetCode] Binary Tree Paths - 二叉树基础系列题目
  4. 第一章:AJAX与jQuery
  5. linux7设备的挂载,centos7磁盘分区与挂载解析
  6. mysql 执行计划详解,Mysql中的explain执行计划详解(1)
  7. 动态网页和静态网页的区别是什么?
  8. 视频编解码(八):264/265解码器小结
  9. 远程数据采集传输---RTU设备
  10. 明白熊猫与冰墩墩的区别,就知道青云KubeSphere与QKCP该如何选择
  11. ActiveX 部件不能创建对象
  12. HG30A-3多用表校验仪
  13. android三星滑动解锁,三星怎样取消滑动解锁
  14. conda 小tips
  15. 基于安卓的视频遥控小车
  16. 阿里云服务器租赁注意点
  17. python绘制等值线图_Python/Matplotlib双线性插值等值线图
  18. 激光雷达和相机联合标定
  19. 【Webpack】999- 手把手教你写一个 loader / plugin
  20. 理科生在爱情上为什么总吃亏?

热门文章

  1. windows系统安装sqlite和创建db文件
  2. 鲁大师Q1季度最强CPU:AMD 3990X持续坐稳第一名!
  3. (更新时间)2021年3月24日 python基础知识(魔法方法)
  4. java 图片深度_将深度图像与RGB图像对齐
  5. 玩转RAW格——基础篇
  6. 如果30岁后普通的程序员(码农)被辞退,还能从事什么工作?
  7. 第三届实时互联网大会圆满落幕 共迎RTC时代的繁荣
  8. 啡鸟集:八大咖啡馆文化魅力都市,打卡圣地
  9. 食品行业数字化解决方案
  10. 计算机管理丢失computer文件,计算机系统启动失败之BCD文件丢失