python面向对象的介绍
Python面向对象思想与应用入门教程类与对象本文实例讲述了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程序设计有所帮助。
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80166125