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中这种描述更在意,对对象的描述,而不是过程的实现这一概念(我门可以认为对象的描述由过程的实现来完成)。
因此面向对象比面向过程具有更高的抽象等级和封装效果,它更强调:类本身到底具备哪些特点 ,然后将其对象化 ,这是一种典型的数据描述事物的风格;而面向过程则更像一个模拟信号,强调情节变化(功能变化),而面向对象更像一个数字信号。缺失了这种功能的衔接性,但是带来了事物的属性