zoukankan      html  css  js  c++  java
  • Python3学习笔记-面向对象

    一、面向对象和面向过程

      面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思 想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数

    1、面向过程编程   

      角色是执行者。把一个项目按照一定的顺序,从头到尾一步步做下去。只要前面有一个步骤变了,后面的就也要变,不易维护。

    2、面向对象编程   

      角色是指挥者。把一个项目分成一个个小部分,每一个部分负责一方面功能,最由这些部分组合而成为一个整体。面向对象的思想适合多人的分工合作。   

      面向对象是包含面向过程的思路的,比如定义类中的方法,每一个小方法小功能中还是面向过程的思想。   

      函数编程与OOP的主要区别就是OOP可以使程序更加容易扩展和易更改。

    二、类和实例

      面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

      类:一个种类,一个模型。汽车模型。一个类就是对一类拥有

      对象:指具体的东西,模型造出来的东西叫做对象。

      实例:实例和对象是一样的。

      实例化:实例化就是造东西的这个过程。

      属性:类里面的一个变量。有类变量和实例变量,类变量是类在定义的时候就有的,实例变量是在实例化的时候才产生的变量。举个例子来说明类变量与实例变量

       类变量:公共的变量,每个实例都可以用。直接通过类名.xxx来进行修改,不需要实例化 

      以Person类为例,在Python中,定义 类是通过class关键字:

    class Person():  #经典类
        pass
    class Person1(object): #新式类
    pass #类名首字母都大写 #在python3里经典类和新式类没有任何区别,均是广度优先 #python2中经典类在多继承的时候是深度优先,新式类是广度优先

      class后面紧接着是类名,即Person,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

      定义好了Person类,那么就可以根据Person类造出person实例

    class Person:  # 经典类
        country='China'  #类属性
        def __init__(self, name):  # __init__构造函数,非必须
            self.name = name # 实例属性
            self.nose = 2  # 鼻子  #类中定义的变量叫属性
            self.face = 3  #
            self.head = 10  # 脑子
            self.wing = 4  # 翅膀
            print('开始造人。。。')
    
        def driver(self):  # 类里面定义变量一定要叫self,不然会报错
            print('老司机,开车非常稳')
            self.eat()  # 调用类里面的函数
    
        def fly(self):
            print('%s 在飞。。' % self.name)
            # 获取类里面的变量
    
        def eat(self):
            print('%s 吃火锅,吃小龙虾,喝啤酒' % self.name)
    
    # 类在用到时候,首先必须实例化
    fengfeng = Person('fengfeng') #实例化,fengfeng就是Person这个类的实例
    #构造函数里面制定了必须传name,在实例化的时候就要把name传进去
    #实例化需要变量接收,不然实例化结束,实例销毁
    print(fengfeng.face)#调用实例属性
    fengfeng.eat()#调用实例方法
    fengfeng.fly()#调用实例方法
    fengfeng.driver()
    class Person:
        country = 'China'#类属性,公共的变量,在外面都可以用
        def __init__(self,name):
            self.name = name,#实例属性,每个实例name不一样
            # self.country = 'China'#若每个对象都会存一个一样country,比较浪费内存,变为类变量
    feng = Person('小白')
    print(feng.name)
    feng.age = 18 #为实例新增实例属性
    print(feng.age)
    feng.country = 'USA'#不会改变类变量,只影响实例里的变量
    print(feng.country)#USA
    FF =Person('小红')
    print(FF.country)#China
    FF.country = 'Jap'#类变量直接通过类名.xxx来进行修改,不需要实例化
    print(feng.country)#USA,Amy的实例化发生在修改类变量之前,所以不再改变
    print(FF.country)#Jap
    FGF = Person('小兰')
    print(FGF.country)#China

    注:注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了__init__方法,在创建实   例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

      和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。

  • 相关阅读:
    python实现指定目录下批量文件的单词计数:串行版本
    PythonPP+lambda:示例
    python面向对象编程基础
    《平凡的世界》读后感
    代码
    【转】提高沟通效果的十个技巧
    LODOP中page-break-before:always给div分页
    LODOP超文本简短问答和相关内容
    Lodop打印较大的超出纸张的图片
    Lodop打印设计矩形重合预览线条变粗
  • 原文地址:https://www.cnblogs.com/fenggf/p/9078225.html
Copyright © 2011-2022 走看看