首页 > 编程语言 > 详细

Python __init__ 理解

时间:2020-03-24 15:18:25      阅读:49      评论:0      收藏:0      [点我收藏+]
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

画图理解为:

技术分享图片

 

Python __init__ 理解

原文:https://www.cnblogs.com/gaona666/p/12558205.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!