12343052 发表于 2017-7-9 15:20:12

类之继承

  面向对象的集成和现实生活中的继承相同,即:子继承父的内容
  例如:
  狗:汪、吃、喝、拉、撒
  猫:喵、吃、喝、拉、撒
  为狗、猫、各自创建一个"类":



class Dog:

   def __init__(self,name,age,gender):

         self.name = name

         self.age = age

         self.gender = gender

   def bark(self):

         print("%s is dog dog !" % (self.name))

   def eat(self):

         print("%s is eating something now!" % (self.name))

   def drink(self):

         print("%s is drinking something now!" % (self.name))

   def shit(self):

         print("%s is shiting now!" % (self.name))

   def pee(self):

         print("%s is peeing now!" % (self.name))

#########
class Cat:

   def __init__(self,name,age,gender):

         self.name = name

         self.age = age

         self.gender = gender


   def miaow(self):

         print("%s is cat cat !" % (self.name))


   def eat(self):

         print("%s is eating something now!" % (self.name))


   def drink(self):

         print("%s is drinking something now!" % (self.name))


   def shit(self):

         print("%s is shiting now!" % (self.name))


   def pee(self):

         print("%s is peeing now!" % (self.name))
  上述两端代码可以看出,吃喝拉撒都是猫、狗特有的属性,但是分别在两个类中编写了两次,通过继承思路修改代码:
  父类"动物":吃、喝、拉、撒
  子类"狗":汪汪叫(继承父类功能)
  子类"猫":喵喵叫(继承父类功能)



class Animal:

   def eat(self):

         print("%s is eating something now !" % (self.name))


   def drink(self):

         print("%s is drinking something now!" % (self.name))


   def shit(self):

         print("%s is shiting now!" % (self.name))


   def pee(self):

         print("%s is peeing now!" % (self.name))


class Dog(Animal):

   def __init__(self,name,age,gender):

         self.name = name

         self.age = age

         self.gender = gender


   def bark(self):

         print("%s is dog dog !" % (self.name))


class Cat(Animal):

   def __init__(self,name,age,gender):

         self.name = name

         self.age = age

         self.gender = gender


   def miaow(self):

         print("%s is cat cat" % (self.name))


dog1 = Dog("cisco",2,"male")

cat1 = Cat("xiaohei",3,"female")

dog1.bark()

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
  任何一个过程中,只要找到,就停止继续查找
页: [1]
查看完整版本: 类之继承