zoukankan      html  css  js  c++  java
  • 关于def __init__():

    ref:https://www.cnblogs.com/liyichen/p/5931840.html

    关于__init__()函数,其本身是python的构造方法。如果不清楚这一点,看着ta就会一脸懵逼。

    这个函数类似init()初始化方法,来初始化新创建对象的状态,在一个对象被创建以后会立即调用,

    比如像实例化一个类:

    class Cats:
    
      def __init__(self):
    
      self.age = 2 
    
     
    >>>mimi = Cats()
    
    >>>mimi.age
    
    >>>2

    我们会发现在初始化Cats中的age的值为2之后,

    实例化直接就能够调用age的值.

    在明白了构造方法之后,我们来点进阶的问题,那就是构造方法中的初始值无法继承的问题。

    class Dog:
    
        def __init__(self):
    
              self.hungry = True
    
        def eat(self):
    
              if self.hungry:
    
                   print 'wang'
    
              else:
    
                   print 'no'
    
    class hsq(Bird):
    
         def __init__(self):
    
              self.fur = 'white'
    
         def play(self):
    
              print ("chaijia")
    
    hh = haq()
    
    hh.play()   #能正常输出
    
    hh.eat()     #报错,因为hsq中没有hungry特性

    原理:在调用了一个实例的方法时,该方法的self参数会自动绑定到实例上(称为绑定方法);

    解决:使用super函数(只在新式类中有用)

    class hsq(Dog):
    
         def __init__(self):
    
              super(Dog,self).__init__()
    
              self.sound = 'Squawk'
    
         def sing(self):
    
              print self.song()

    在经典类中一般会直接写:Dog.__init__(self)    替代    super(Dog,self).__init__()

    至于新式类,经典类,换篇再说。。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------读书湖边学python

  • 相关阅读:
    es5和es6的区别
    如何将word文档内容在网页显示方法
    实现在线浏览PDF文件的方法
    移动端开发兼容问题
    常见的浏览器兼容问题和解决方法
    弹层
    猜数字游戏
    米字格画布
    时钟制作
    关于屏幕高度
  • 原文地址:https://www.cnblogs.com/dushuhubian/p/9593118.html
Copyright © 2011-2022 走看看