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学习第十四篇——类初步使用及面向对象思想的更多相关文章

  1. Python学习第十五篇——类继承和类实例化

    学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...

  2. Python 学习 第十四篇:命名元组

    Python的元组不能为元组内部的数据进行命名,而 collections.namedtuple 可以来构造一个含有字段名称的元组类,命名元组可以通过逗号+字段名来获取元素值: collections ...

  3. python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收

    代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A:     def spam(self,x) ...

  4. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  5. Python 学习 第十五篇:模块搜索路径和包导入

    在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...

  6. Python学习(十四) —— 并发编程

    一.进程的概念 进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念.操作系统的其它所有内容都是围绕进程的概念展开的. #必备的理论基础 #一 ...

  7. python学习【第四篇】python函数 (一)

    一.函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以 ...

  8. Python学习【第四篇】用户输入及判断

    用户输入: 例1.写一个用户输入密码的小程序,流程如下: 1.用户输入自己的用户名 2.打印"Hello+用户名" #!/usr/bin/env python #name = ra ...

  9. python学习第十四天 -面向对象编程基础

    python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界 ...

随机推荐

  1. Vue2 学习笔记4

    文中例子代码请参考github 父组件向子组件传值 组件实例定义方式,注意:一定要使用props属性来定义父组件传递过来的数据 <script> // 创建 Vue 实例,得到 ViewM ...

  2. VS快捷键失效问题

    VS作为宇宙最强IDE,为我们提供了强大的快捷键组合,熟练的使用这些快捷键能极大提高我们的编码效率,但是在我们实际使用的过程中经常会遇到某个快捷键组合失效的问题. 问题原因: 一般都是VS的快捷键与电 ...

  3. AndroidStudio2.2.x以上使用cMake编译调用底层c生成依赖库

    最近使用AndroidStudio的最新ndk编译方式cMake来编译底层cpp文件,由于之前没有接触过cMake语法,先附上官方学习文档地址:https://developer.android.co ...

  4. Dockfile制作镜像

    讲一个简单的案例 @哈希码用来校验,这样子会安全 MAINTANIER可能将会被LABEL代替,仅仅说说明一下镜像信息罢了. 1.首先是我们创建一个镜像 [root@ELK-chaofeng08 ~] ...

  5. ID 生成器

    using System; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Thr ...

  6. SICP 习题 (1.43)解题总结

    SICP 习题 1.43 是前面两道题的延续,习题要求我们定义一个过程(repeat f n) .当中f是一个单參数过程.题目要求我们通过repeat过程将过程f调用n次,注意是嵌套调用n次,不是连续 ...

  7. shallow clone

    shallow clone 浅克隆经常在一些大型仓库中很有用——不用花费大量时间去clone一个完整的仓库,仅仅checkout出来某个分支(如master)的最新N次递交: git clone -- ...

  8. Nginx入门讲解——初步认识了解nginx.conf配置文件以及配置多个虚拟主机

    本文引自网络进攻学习之用https://blog.csdn.net/weixin_38111957/article/details/81080539 一. 引言上节文章讲述了如何用信号控制Nginx服 ...

  9. 005_python中的构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...

  10. extjs 中的一些鲜为人知的属性(深渊巨坑)

    1. new Ext.form.FormPanel  组件中,去除边框属性为:baseCls:'my-panel-no-border', 2.当 new Ext.form.FormPanel  嵌套b ...