zoukankan      html  css  js  c++  java
  • Python __init__ 理解

    class Phone():
            
        def call(self):
            print("phone",self.price)
    
    phone1 = Phone()
    phone1.price = 1000
    phone1.call()
    
    phone2 = Phone()
    phone2.call()

    这样,在call方法里,无法保证每个对象都有price这个属性,会报错  AttributeError: 'Phone' object has no attribute 'price'

    这时就用到__init__(),让每一个对象都有这些属性

    class Phone():
        def __init__(self):
            self.brand = "xiaomi"
            self.price = 2999
        def call(self):
            print("phone",self.price)
    phone1 = Phone()
    phone1.price = 1000
    phone1.call()
    
    phone2 = Phone()
    phone2.call()

    phone 1000
    phone 2999

    在执行  phone1 = Phone()时会有4步:

    1. 找有没有一块空间是Phone,已经创建了Phone类,所以有这块空间
    2. 利用Phone类,向内存申请一块和Phone一样的空间
    3. 去Phone找有没有__init__,如果没有,则将开辟的空间给了对象名P
    4. 如果有__init__,则会进入__init__方法执行里面的动作,self传入的为开辟的地址,然后将内存地址赋值给对象P

    画图理解为:

  • 相关阅读:
    梦断代码阅读笔记02
    第三周
    第二周
    《大道至简》阅读笔记
    暑假第一周
    hdu-1237简单计算器(栈的运用)
    玩骰子(概率,暴力)
    hdu-5568SUM (dp)
    codeforce-600C. Make Palindrome(贪心)
    codeforce-601A. The Two Routes(最短路)
  • 原文地址:https://www.cnblogs.com/gaona666/p/12558205.html
Copyright © 2011-2022 走看看