Python学习第十四篇——类初步使用及面向对象思想
class Restaurant():
def __init__(self,restaurant_name,cuisine_type):
self.name = restaurant_name
self.type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
print("the restaurant is:"+self.name.title()+".")
print("It is main business:"+self.type.title()+".")
def updata_people(self,number):
self.number_served = number
def open_restaurant(self):
#print("It is oprnninh!")
print("It has "+str(self.number_served)+" customers,please wait for a moment!")
def increment_people(self,inc_nums):
self.number_served = self.number_served + inc_nums rest = Restaurant('shudaxia','chuan cai')
rest.describe_restaurant()
rest.open_restaurant()
rest.number_served = 23
rest.open_restaurant()
rest.updata_people(30)
rest.open_restaurant()
rest. increment_people(25)
rest.open_restaurant()
上述代码表示:如何创建了一个类,如何实例化类,以及如何修改类
知识点1:创建类的要素:关键字:class; 类中创建的函数(暂且这么称呼)被称为方法,其中__init__是特殊的方法(注意前后各两个下划线):因为__init__中完成了参数的赋值,其中的参数通常被称为“属性”,(注意思考,类,属性 这种叫法的微妙性,体会面向对象的编程特色)。
知识点2:注意self 是必不可少的形参(或者叫属性)。因为self 实际上是传递的实例化对象,比如上述代码中的rest,通过上述代码,可以发现,通过self可以访问到所有的属性,并对其进行操作,这本质上很类似于c或c++中的指针。实际上,我们确实可以认为其具有指针的特色
面向对象,面向过程的本质性思考:
如果想要清楚面向过程和面向对象的差异性和其中的思想:首先需要清楚函数和类的差异性和本质,实际上,函数和类也就反映了过程和对象的本质。
拿c语言为例:c语言的构成都是由函数构成的,甚至是一个主函数。每个函数完成了特定的功能(这句话很重要)。即,我门强调:面向过程的C语言由函数块构成,函数是完成特定功能的块,我们认为函数是为了完成某一个功能(其实就是过程),c语言由这样具有某种联系的功能块构成最后一个我们需要的功能(过程)
而类强调描述一类事务的特性,这类事物具有某些属性。我们可以通过函数(这里叫方法,请理解这种叫法)来描述这类事物的属性,我们强调的是:描述的对象的属性是怎么样的。而完成这样的描述是通过函数(这里叫类)完成的。但我们的侧重点是:描述了哪种对象的哪些属性(尽管我们是通过函数(方法)来完成这样的描述)。由此可见,Python中这种描述更在意,对对象的描述,而不是过程的实现这一概念(我门可以认为对象的描述由过程的实现来完成)。
因此面向对象比面向过程具有更高的抽象等级和封装效果,它更强调:类本身到底具备哪些特点 ,然后将其对象化 ,这是一种典型的数据描述事物的风格;而面向过程则更像一个模拟信号,强调情节变化(功能变化),而面向对象更像一个数字信号。缺失了这种功能的衔接性,但是带来了事物的属性
Python学习第十四篇——类初步使用及面向对象思想的更多相关文章
- Python学习第十五篇——类继承和类实例化
学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...
- Python 学习 第十四篇:命名元组
Python的元组不能为元组内部的数据进行命名,而 collections.namedtuple 可以来构造一个含有字段名称的元组类,命名元组可以通过逗号+字段名来获取元素值: collections ...
- python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收
代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A: def spam(self,x) ...
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Python 学习 第十五篇:模块搜索路径和包导入
在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...
- Python学习(十四) —— 并发编程
一.进程的概念 进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念.操作系统的其它所有内容都是围绕进程的概念展开的. #必备的理论基础 #一 ...
- python学习【第四篇】python函数 (一)
一.函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以 ...
- Python学习【第四篇】用户输入及判断
用户输入: 例1.写一个用户输入密码的小程序,流程如下: 1.用户输入自己的用户名 2.打印"Hello+用户名" #!/usr/bin/env python #name = ra ...
- python学习第十四天 -面向对象编程基础
python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界 ...
随机推荐
- Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- git 使用及常用命令介绍
一.git 常用命令 git clone 地址 克隆项目 git status 查看当前状态 git add 文件或文件夹 (加入本地暂存目录) git commit -m "注释" ...
- 如何学习sss和前端数据处理
1.学习scss,就看这篇:http://www.ruanyifeng.com/blog/2012/06/sass.html 就够了,因为sass的出现本来就是为了简化工作提高效率,也不算什么深奥精妙 ...
- GraphQL 是什么
我的理解,GraphQL 是一种以Json为载体实现:操作数据和获取结果的需求的查询语言!简言:以Json换Json.
- C#深度学习の委托深度解析
一.我们在使用C#的过程中,不可避免的用到了委托. 委托的本质是什么呢? 从语法上看,委托是对方法的抽象封装,例如:public void print1(),public void print2(), ...
- 十大PHP程序员必备工具
十大PHP程序员必备工具 1.Notepad++ 总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置 ...
- python六十六课——单元测试(二)
''' 封装Person类 ''' class Person: def __init__(self,name,age): self.name=name self.age=age def getAge( ...
- [HEOI2016/TJOI2016]字符串
嘟嘟嘟 今天复习一下SAM. lcp固然不好做,干脆直接翻过来变成后缀.首先答案一定满足单调性,所以我们二分lcp的长度\(mid\),然后判断\(s[d \ldots d + mid - 1]\)是 ...
- 转://Oracle 事务探索与实例(二)
一数据库版本 SYS@LEO1>select * from v$version; BANNER ------------------------------------------------- ...
- 【vue】vue +element 搭建项目,vue-cli 如何打包上线
以自己的项目为例 第一步:手动修改config文件夹中的index.js文件中的build对象,将 assetsPublicPath 中的 “/” ,改为 “你实际的加载路径” 如图: 第二步:执行( ...