zoukankan      html  css  js  c++  java
  • python学习总结篇(3)——类

    python本身也是一门面向对象的语言,因此类本身也是python的一大特点,这里对python中类的使用进行总结。

    • 关于基本类

    先通过一段程序给出例子:

     1 class Restaurant():
     2     name = ""  #公有成员
     3     type = ""  #公有成员
     4     __number_served = 0  #私有成员
     5 
     6     def __init__(self,restaurant_name,cuisine_type): #如同构造函数一样,实例化对象的的时候使用
     7         self.name = restaurant_name
     8         self.type = cuisine_type
     9         self.__number_served = 0
    10 #这里的self相当于c++中的this指针,指向当前对象,也就是说self本质是始终指向当前对象,其中 name,type,number_served属于这个对象的属性
    11 #也就是成员。
    12 
    13     def describe_restaurant(self):
    14         print("the restaurant is:"+self.name.title()+".")
    15         print("It is main business:"+self.type.title()+".")
    16 
    17     def updata_people(self,number):
    18         self.__number_served = number
    19 
    20     def open_restaurant(self):
    21         #print("It is oprnninh!")
    22         print("It has "+str(self.__number_served)+" customers,please wait for a moment!")
    23 
    24     def increment_people(self,inc_nums):
    25         self.__number_served = self.__number_served + inc_nums
    26 
    27     def print___number_served(self): #对于私有成员的访问只能通过方法进行访问
    28         print(self.__number_served)
    29 
    30 rest = Restaurant('shudaxia','chuan cai')
    31 
    32 rest.describe_restaurant()
    33 rest.open_restaurant()
    34 rest.number_served = 23
    35 rest.open_restaurant()
    36 rest.updata_people(30)
    37 rest.open_restaurant()
    38 rest. increment_people(25)
    39 rest.open_restaurant()
    40 rest.print___number_served()

     可见,在python中,定义类,仍然是

     class  类名( ):

    不管是何种语言,对于一个类而言,只有两个东西:类成员(python中也叫属性)和类方法,类成员给出了这个类有哪些属性,类方法用来描述这些属性。

    截取上一段代码中的前一部分如下:

     1 class Restaurant():
     2     name = ""  #公有成员
     3     type = ""  #公有成员
     4     __number_served = 0  #私有成员
     5 
     6     def __init__(self,restaurant_name,cuisine_type): #如同构造函数一样,实例化对象的的时候使用
     7         self.name = restaurant_name
     8         self.type = cuisine_type
     9         self.__number_served = 0
    10 #这里的self相当于c++中的this指针,指向当前对象,也就是说self本质是始终指向当前对象,其中 name,type,number_served属于这个对象的属性
    11 #也就是成员。

    对于上述代码,创建了一个叫做Restaurant()的类,对于这个类,它的类成员是:name,type, 以及__number_served,这些也被称为类Restaurant的属性,其中name和type被称为公有属性,__number_served被称为私有属性。(以下划线开头的成员变量为私有成员变量),关于下划线有如下说明:

    第六行: __init__()为类的构造函数(python中也被称为实例化函数,也就是c++中的构造函数),显然这个函数的意义是在生成对象的时候,用来实例化这个对象。

    另外一点,所有的类函数的参数中,都有self变量,且self是作为第一个参数,实际上这个self本质上相当于是c++中的this指针,它指向了当前对象。也就说self是和当前对象进行了绑定关系。因为类方法本质是对类属性进行的操作,而这些类属性是要从属于对象的,因此,在python中以这种方式表明这层含义。


    rest = Restaurant('shudaxia','chuan cai')这行代码为生成一个对象并实例化,具体的形式为

    对象名 = 类名 (成员参数)
    可见,在python中,并不需要通过new这种方式实例化一个对象,直接通过上述方式,即可定义并实例化一个对象。
    注意,___number_served是私有成员,私有成员在类外调用不能够直接调用,也就是不能通过对象名.___number_served这种方式进行调用,而应该通过类方法进行调用,即rest.print___number_served()
     
    • 关于继承

    继承也是面向对象的一个重要特性,python中字子类继承父类的方式为:

    class  子类名(父类名):

    通过下面的例子感受子类与父类

     在初始化的时候,如果子类没有自己的__init__,则子类会自动调用父类的__init__

     如果子类有自己的__init__,则子类不会自动调用父类的__init__

    stay foolish,stay hungry
  • 相关阅读:
    remove white space from read
    optimize the access speed of django website
    dowload image from requests
    run jupyter from command
    crawl wechat page
    python version 2.7 required which was not found in the registry windows 7
    health
    alternate rows shading using conditional formatting
    word
    【JAVA基础】static 关键字
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/14506090.html
Copyright © 2011-2022 走看看