2.1.1 Python类的基本概念

类,它对应的是英文单词class,“类”是由class翻译过来的,你就把它作为一个翻译术语吧。
除了“类”这个术语外,还要经常提到OOP,即面向对象编程(或者“面向对象程序设计”)。
所谓“术语”,可以粗浅地理解为某个领域的“行话”,比如在物理学里面,有专门定义的“质量”、“位移”、“速度”等,这些术语有的跟日常生活中的俗称名字貌似一样,但是所指有所不同。
“术语”的主要特征是具有一定的稳定性,并且严谨、简明,不是流行语言。在谈到OOP的时候就会遇到一些术语,需要先明确它们的含义。
1,问题空间
问题空间是问题解决者对一个问题所达到的全部认识状态,它是由问题解决者利用问题所包含的信息和已贮存的信息主动构成的。
一个问题一般从以下三个方面来定义:
初始状态——开始时不完全的信息或令人不满意的状况。
目标状态——你希望获得的信息或状态。
操作——为了从初始状态迈向目标状态,你可能采取的步骤。
这三个部分加在一起定义了问题空间(problem space)。
2,对象
对象(object),是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。
Python中的一切都是对象,不管是字符串、函数、模块还是类都是对象,“万物皆对象”。
都是对象有什么优势吗?这说明Python天生就是OOP的。也说明Python中的所有东西都能够进行拼凑组合应用,因为对象就是可以拼凑组合应用的。
对于对象相关定义的内容如下:
对象:一个对象有自己的状态、行为和唯一的标识;所有相同类型的对象所具有的结构和行为在它们共同的类中被定义。
状态(state):包括这个对象已有的属性(通常是类里面已经定义好的)和对象具有的当前属性值(这些属性往往是动态的)。
行为(behavior):是指一个对象如何影响外界及被外界影响,表现为对象自身状态的改变和信息的传递。
标识(identity):是指一个对象所具有的区别于所有其他对象的属性(本质上指内存中所创建的对象的地址)。
简化之,对象应该具有属性(就是上面的状态,因为属性更常用)、方法(就是上面的行为,方法常被使用)和标识。因为标识是内存中自动完成的,所以,平时不用怎么管理它,主要就是属性和方法。
3,面向对象
面向对象,是指程序员在开发程序的时候要怎么思考问题,怎么构建程序的事情。
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象程序设计可以看作是一种在程序中包含各种独立而又互相调用的对象的思想。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其他对象,因此它们都可以被看作是一个小型的“机器”,即对象。
当我们提到面向对象的时候,它不仅指一种程序设计方法,更多意义上是一种程序开发方式。
4,类
在面向对象程式设计中,类(class)是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
类的更严格的定义是由某种特定的元数据所组成的内聚的包。它描述了一些对象的行为规则,而这些对象就被称为该类的实例。类有接口和结构。接口描述了如何通过方法与类及其实例互操作,而结构描述了一个实例中数据如何划分为多个属性。类是与某个层的对象的最具体的类型。类还可以有运行时表示形式(元对象),它为操作与类相关的元数据提供了运行时支持。
支持类的编程语言在支持与类相关的各种特性方面都多多少少有一些微妙的差异。大多数都支持不同形式的类继承。许多语言还支持提供封装性的特性,比如访问修饰符。类的出现,为面向对象编程的三个最重要的特性( 封装性、继承性、多态性)提供了实现的手段。
5,编写类
首先要明确,类是对某一群具有同样属性和方法的对象的抽象。比如这个世界上有很多长翅膀并且会飞的生物,于是聪明的人们就将它们统一称为“鸟”——这就是一个类,虽然它也可以称作“鸟类”。
要定义类,就要抽象,找出共同的方面。
class 美女: #用class来声明,后面定义的是一个类
pass
这里编写的类不用python,使用伪代码,清晰展现类的定义:
class 美女:
胸围 = 91
腰围 = 57
臀围 = 83
皮肤 = white
唱歌()
打球()
定义了一个名称为“美女”的类,其中约定,没有括号的是属性,带有括号的是方法。这个类仅仅是对美女的通常抽象,并不是某个具体美女。
刘亦菲 = 美女()
用这样一种表达方式就是将“美女类”实例化了,对“刘亦菲”这个实例,就可以具体化一些属性,比如胸围;还可以具体实施一些方法,比如做饭。通常可以用这样一种方式表示:
a = 刘亦菲.腰围
用点号“.”的方式,表示刘亦菲腰围的属性,得到的变量a就是57。另外,还可以通过这种方式给属性赋值,比如
刘亦菲.皮肤 = yellow
这样,这个实例(刘亦菲)的皮肤就是黄色的了。
通过实例,也可以访问某个方法,比如:
刘亦菲.打球()
这就是在执行一个方法,让刘亦菲这个实例打球。现在也比较好理解,只有一个具体的实例才能打球
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值