zoukankan      html  css  js  c++  java
  • 类之继承

    面向对象的集成和现实生活中的继承相同,即:子继承父的内容

    例如:

     狗:汪、吃、喝、拉、撒

     猫:喵、吃、喝、拉、撒

    为狗、猫、各自创建一个"类":

     1 class Dog:
     2 
     3     def __init__(self,name,age,gender):
     4 
     5         self.name = name
     6 
     7         self.age = age
     8 
     9         self.gender = gender
    10 
    11     def bark(self):
    12 
    13         print("%s is dog dog !" % (self.name))
    14 
    15     def eat(self):
    16 
    17         print("%s is eating something now!" % (self.name))
    18 
    19     def drink(self):
    20 
    21         print("%s is drinking something now!" % (self.name))
    22 
    23     def shit(self):
    24 
    25         print("%s is shiting now!" % (self.name))
    26 
    27     def pee(self):
    28 
    29         print("%s is peeing now!" % (self.name))
    30 
    31 #########
    32 
    33 class Cat:
    34 
    35     def __init__(self,name,age,gender):
    36 
    37         self.name = name
    38 
    39         self.age = age
    40 
    41         self.gender = gender
    42 
    43  
    44 
    45     def miaow(self):
    46 
    47         print("%s is cat cat !" % (self.name))
    48 
    49  
    50 
    51     def eat(self):
    52 
    53         print("%s is eating something now!" % (self.name))
    54 
    55  
    56 
    57     def drink(self):
    58 
    59         print("%s is drinking something now!" % (self.name))
    60 
    61  
    62 
    63     def shit(self):
    64 
    65         print("%s is shiting now!" % (self.name))
    66 
    67  
    68 
    69     def pee(self):
    70 
    71         print("%s is peeing now!" % (self.name))

    上述两端代码可以看出,吃喝拉撒都是猫、狗特有的属性,但是分别在两个类中编写了两次,通过继承思路修改代码:

    父类"动物":吃、喝、拉、撒

    子类"狗":汪汪叫(继承父类功能)

    子类"猫":喵喵叫(继承父类功能)

     1 class Animal:
     2 
     3     def eat(self):
     4 
     5         print("%s is eating something now !" % (self.name))
     6 
     7  
     8 
     9     def drink(self):
    10 
    11         print("%s is drinking something now!" % (self.name))
    12 
    13  
    14 
    15     def shit(self):
    16 
    17         print("%s is shiting now!" % (self.name))
    18 
    19  
    20 
    21     def pee(self):
    22 
    23         print("%s is peeing now!" % (self.name))
    24 
    25  
    26 
    27 class Dog(Animal):
    28 
    29     def __init__(self,name,age,gender):
    30 
    31         self.name = name
    32 
    33         self.age = age
    34 
    35         self.gender = gender
    36 
    37  
    38 
    39     def bark(self):
    40 
    41         print("%s is dog dog !" % (self.name))
    42 
    43  
    44 
    45 class Cat(Animal):
    46 
    47     def __init__(self,name,age,gender):
    48 
    49         self.name = name
    50 
    51         self.age = age
    52 
    53         self.gender = gender
    54 
    55  
    56 
    57     def miaow(self):
    58 
    59         print("%s is cat cat" % (self.name))
    60 
    61  
    62 
    63 dog1 = Dog("cisco",2,"male")
    64 
    65 cat1 = Cat("xiaohei",3,"female")
    66 
    67 dog1.bark()
    68 
    69 cat1.eat()

    在指定类的时候,括号中写另一个类,等于让当前类继承括号中类的功能。

    编写继承类的思路:

    把多个类公有的功能写入父类,子类只需要继承父类,这样就不需要一一编写重复的功能块。

    多类继承:

     多类继承的时候,如何查找方法,在Python2.x的版本中区分经典类、新式类。两种不同类型的类在查找"方法"的时候查找规则是不同的。

    经典类:深度优先

    新式类:广度优先

    如何区分"类"的类型

    新式类:当前类或者父类继承了(object)

    在Python3.x中,不在讨论经典类,默认都是新式类,所以我们只需要知道广度优先的查找特征。

    class D:

    class C:

    class B(C,D):

    class A(B):

    ABCD四个类的关系:

    B是A的父类

    C,D是B的父类

    这时候,在A中执行一个方法的时候,Python查找路径:

    A————>B————>C————>D

    任何一个过程中,只要找到,就停止继续查找

  • 相关阅读:
    從 IC流程中探索數位工程師的風格--III
    從 IC流程中探索數位工程師的風格--II
    從 IC流程中探索數位工程師的風格--I
    producer and consumer concept ( II )
    producer and consumer concept ( I )
    是否long pulse 訊號一定要拿來做同步處理?不做同步處理可以嗎?
    module介面訊號的收斂與發散的思考
    恐龍版OS裏的哲學家問題的思考
    git创建与合并分支
    把CentOS启动进度条替换为详细信息
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/6928918.html
Copyright © 2011-2022 走看看