• Python学习第十四篇——类初步使用及面向对象思想


     1 class Restaurant():
     2     def __init__(self,restaurant_name,cuisine_type):
     3         self.name = restaurant_name
     4         self.type = cuisine_type
     5         self.number_served = 0
     6     def describe_restaurant(self):
     7         print("the restaurant is:"+self.name.title()+".")
     8         print("It is main business:"+self.type.title()+".")
     9     def updata_people(self,number):
    10         self.number_served = number
    11     def open_restaurant(self):
    12         #print("It is oprnninh!")
    13         print("It has "+str(self.number_served)+" customers,please wait for a moment!")
    14     def increment_people(self,inc_nums):
    15         self.number_served = self.number_served + inc_nums
    16         
    17 rest = Restaurant('shudaxia','chuan cai')
    18 rest.describe_restaurant()
    19 rest.open_restaurant()
    20 rest.number_served = 23
    21 rest.open_restaurant()
    22 rest.updata_people(30)
    23 rest.open_restaurant()
    24 rest. increment_people(25)
    25 rest.open_restaurant()

    上述代码表示:如何创建了一个类,如何实例化类,以及如何修改类

    知识点1:创建类的要素:关键字:class; 类中创建的函数(暂且这么称呼)被称为方法,其中__init__是特殊的方法(注意前后各两个下划线):因为__init__中完成了参数的赋值,其中的参数通常被称为“属性”,(注意思考,类,属性 这种叫法的微妙性,体会面向对象的编程特色)。

    知识点2:注意self 是必不可少的形参(或者叫属性)。因为self 实际上是传递的实例化对象,比如上述代码中的rest,通过上述代码,可以发现,通过self可以访问到所有的属性,并对其进行操作,这本质上很类似于c或c++中的指针。实际上,我们确实可以认为其具有指针的特色

    面向对象,面向过程的本质性思考:

    如果想要清楚面向过程和面向对象的差异性和其中的思想:首先需要清楚函数和类的差异性和本质,实际上,函数和类也就反映了过程和对象的本质。

    拿c语言为例:c语言的构成都是由函数构成的,甚至是一个主函数。每个函数完成了特定的功能(这句话很重要)。即,我门强调:面向过程的C语言由函数块构成,函数是完成特定功能的块,我们认为函数是为了完成某一个功能(其实就是过程),c语言由这样具有某种联系的功能块构成最后一个我们需要的功能(过程)

    而类强调描述一类事务的特性,这类事物具有某些属性。我们可以通过函数(这里叫方法,请理解这种叫法)来描述这类事物的属性,我们强调的是:描述的对象的属性是怎么样的。而完成这样的描述是通过函数(这里叫类)完成的。但我们的侧重点是:描述了哪种对象的哪些属性(尽管我们是通过函数(方法)来完成这样的描述)。由此可见,Python中这种描述更在意,对对象的描述,而不是过程的实现这一概念(我门可以认为对象的描述由过程的实现来完成)。

    因此面向对象比面向过程具有更高的抽象等级和封装效果,它更强调:类本身到底具备哪些特点 ,然后将其对象化  ,这是一种典型的数据描述事物的风格;而面向过程则更像一个模拟信号,强调情节变化(功能变化),而面向对象更像一个数字信号。缺失了这种功能的衔接性,但是带来了事物的属性

  • 相关阅读:
    hdu 4651 Partition (利用五边形定理求解切割数)
    单点登录SSO的实现原理
    高速排序算法
    2014 百度之星第三题
    TR069协议向导——一个帮助你了解TR069协议的简明教程(一)
    教你用笔记本破解无线路由器password
    人脸识别算法初次了解
    JSP验证码
    GROUP BY,WHERE,HAVING之间的差别和使用方法
    typedef函数指针使用方法
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9487212.html
Copyright © 2020-2023  润新知