python14-我爹的就是我的

《python14-我爹的就是我的》 python

上回我们提到对象这码子事,可能有人不以为然,觉得这跟列表、字典什么的没啥本质区别。
这么想没错,毕竟列表、字典都是对象(“对象类”的一个实际的“对象”(实例))。

but,有人以为这个名词没必要出现,就错了。
因为没了“对象”这个概念,不止你退回了单身狗状态,你爹的东西你也继承不了了。
那什么叫继承呢?
接着用加菲猫的例子——不过这回,说的是一个品种(类)了。

《python14-我爹的就是我的》

加菲猫
一种“喵喵”叫哺乳动物。平均寿命14岁,爱吃鱼,爱喝牛奶。
肥胖,易流泪,安静(很少“喵喵”叫)。

有没有觉得斜体部分似曾相识?就是下面内容所描述的对不对?

class Cat:
   # 初始状态,self就是对象自己
   def __init__(self, name, size, color):
       self.age = 0
       self.name = name
       self.size = size
       self.color = color

   # 长大一岁,超过14岁就gg了
   def grow(self):
       self.age += 1
       if self.age >= 14:
           print("Die!")
           self.describe()
       else:
           print("%d!" % self.age)

     # 猫叫(春)
     def meow(self):
         print("meow meow")

    #吃东西(猫会挑食的)
     def feed(self, food):
         if food == "milk" or food == "fish":
             print("Eat!")
         elif self.name == "Garfield" and food == "pasta":
             print("Eat!")
        else:
            print("Throw away!") 
            self.meow()

    # 描述状态
    def describe(self):
       print("%s is %d now. It's a %s %s cat." % (self.name, self.age, self.size, self.color))

但我竟要完全重写!(好吧,你当然可以ctrl+c & ctrl+v,但这手动的办法毕竟不是长久之计啊)
而懒惰的程序员前辈们,为了“减少重复工”这一最高理想,推出了对象这个概念产品,并捆绑销售继承功能附件,世界一下子就简单起来了。

接着上面的“猫类”写:

class Garfield(Cat): # 继承猫类(此时Garfield是**子类**,Cat是**父类**)
   def __init__(self, name, color):
       size = "fat" # 加菲猫永远是肥胖的
       Cat.__init__(self, name, size, color) # 使用Cat的初始化函数(构造函数)

   # 增加流泪的“属性”
   def tear(self, emotion):
       print("%s tears!" % emotion)       

   # 修改feed()函数,显示加菲猫易流泪且安静的特点
   def feed(self, food):
       if food == "milk" or food == "fish":
           print("Eat!")           self.tear("Excited")
       elif self.name == "Garfield" and food == "pasta":
           print("Eat!")
           self.tear("Satisfied")
       else:
           self.tear("Sad") 

让我们重新生成一下加菲猫(对象),并让它“动”起来:

Garfield = Garfield("Garfield", "orange")

Garfield.meow()
Garfield.tear("happy")
Garfield.feed("milk")
Garfield.feed("pasta")
Garfield.feed("water")
Garfield.feed("fish")

Garfield.grow()

Garfield.describe()

很好,加菲猫类成功得到它爹的东西,而且凸显出个人特色了!

有任何问题请回复提出。然后欢迎关注微信公众号格物致愚

《python14-我爹的就是我的》 格物致愚

    原文作者:yigoh
    原文地址: https://www.jianshu.com/p/01b7bcd687c1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞