美文网首页
python------面向对象

python------面向对象

作者: 你猜_e00d | 来源:发表于2018-07-14 16:05 被阅读0次

    一、什么是面向对象

    面向对象是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

    二、类和对象

    面向对象编程的2个非常重要的概念:类和对象
    对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类
    类是对象的模子
    对象是类的具体实例

    1、如何定义类
    class Dog()
        def wake()
            print("汪汪汪")
    

    定义类时有2种:新式类和经典类,上面的Car为经典类,如果是Car(object)则为新式类

    2、如何创建对象

    python中,可以根据已经定义的类去创建出一个个对象
    创建对象的格式为:

    对象名 = 类名()
    

    三、init()方法

    int方法就是在你创建完对象后默认执行的.

    四、str()方法

    当使用print输出对象的时候,只要自己定义了str(self)方法,那么就会打印从在这个方法中return的数据.

    五、del()方法

    创建对象后,python解释器默认调用init()方法;
    当删除一个对象时,python解释器也会默认调用一个方法,这个方法为del()方法.

    六、继承方法

    1、单继承

    子类在继承的时候,在定义类时,小括号()中为父类的名字
    父类的属性、方法,会被继承给子类

    class Animal(object):
    
    def __init__(self, name='动物', color='白色'):
    self.__name = name
    self.color = color
    
    def __test(self):
    print(self.__name)
    print(self.color)
    
    def test(self):
    print(self.__name)
    print(self.color)
    
    
    
    class Dog(Animal):
    def dogTest1(self):
    #print(self.__name) #不能访问到父类的私有属性
    print(self.color)
    
    
    def dogTest2(self):
    #self.__test() #不能访问父类中的私有方法
    self.test()
    
    
    A = Animal()
    #print(A.__name) #程序出现异常,不能访问私有属性
    print(A.color)
    #A.__test() #程序出现异常,不能访问私有方法
    A.test()
    
    print("------分割线-----")
    
    D = Dog(name = "小花狗", color = "黄色")
    D.dogTest1()
    D.dogTest2()
    
    2、多继承

    多继承就是子类可以有多个父类并可以继承他们的属性行为

    class base(object):
    def test(self):
    print('----base test----')
    class A(base):
    def test(self):
    print('----A test----')
    
    # 定义一个父类
    class B(base):
    def test(self):
    print('----B test----')
    
    # 定义一个子类,继承自A、B
    class C(A,B):
    pass
    
    
    obj_C = C()
    obj_C.test()
    

    七、重写和调用父类方法

    1、重写就是当子类不满足父类的时候就需要重写,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法。

    class Cat(object):
    def sayHello(self):
    print("halou-----1")
    
    
    class Bosi(Cat):
    
    def sayHello(self):
    print("halou-----2")
    
    bosi = Bosi()
    
    bosi.sayHello()
    

    2、调用父类方法当子类想回到父类的属性的时候就需要用到调用父类方法用supe()。

    class Bosi(Cat):
    
    def __init__(self,name):
    # 调用父类的__init__方法1(python2)
    #Cat.__init__(self,name)
    # 调用父类的__init__方法2
    #super(Bosi,self).__init__(name)
    # 调用父类的__init__方法3
    super().__init__(name)
    
    def getName(self):
    return self.name
    
    bosi = Bosi('xiaohua')
    
    print(bosi.name)
    print(bosi.color)
    

    八、 new方法

    * __new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
    * 
    

    new必须要有返回值,返回实例化出来的实例,这点在自己实现new时要特别注意,可以return父类new出来的实例,或者直接是object的new出来的实例
    *
    init有一个参数self,就是这个new返回的实例,initnew的基础上可以完成一些其它初始化的动作,init不需要返回值

    image.png

    相关文章

      网友评论

          本文标题:python------面向对象

          本文链接:https://www.haomeiwen.com/subject/dehypftx.html