__init__初始化方法

使用场景:多个对象(由同一个类产生)的属性同名且值都一样,这时就需要使用init()方法.

# 多个对象(由同一个类产生)的属性同名且值都一样,这时就需要使用__init__()方法.

# class 定义属性和方法,增加代码的复用性 __init__()方法
"""
双下划线开头,双下划线结尾的方法都具有特殊含义,并且此方法在特定情况下会自动调用.(调用就是使用,执行的意思)Python解释器会自动调用,内部已经写好了.

把定义属性的方法写在__init__()方法里面,当然,也可以自己定义.只是需要自己去写调用方法

称之为魔法方法.也叫运算符重载方法

在创建对象时就会自动调用.
__init__()方法叫初始化,功能: 定义属性

在其他的语言中也有__init__()方法,就是进行属性赋值操作的方法.

自我理解:类似手机或电脑在开机启动的时候进行的加载操作.可以简单理解为是一个程序正式运行前的准备工作.

"""
class Dog:
    def __init__(self, name):  # 这里的name称为自定义参数.不要写死了这里加形参进行传参操作.如果不想让属性的初始值写死,可以给init加形参,通过参数的方式传递给属性
        self.type = ''
        self.name = name  # 自定义属性的初始值


# 先造对象,再调用init()方法init的实参应该在创建对象的类名后面的小括号中传递
dog1 = Dog('小花')  # 在创建的时候就会执行init()方法,同时注意init()方法有一个位置参数(形参),不能调用的时候不能为空,所以这里一定要记得给init()传一个参数'小花'
print(id(dog1.name))  # 2778225245504
print(id(dog1.type))  # 2240461703328 虽然id地址一样,但是仍然不一样
print(dog1.name)  # 小花
print(dog1)  # <__main__.Dog object at 0x0000025674A58978>
# 都有属性type,值一样,但是 不是同一个属性.只是属性名字一样而已.创建的时候代码会走两遍,每次创建一个对象就会执行一遍
dog2 = Dog('小黑')  # 小黑
print(dog2.name)  # 2240461703328
print(id(dog2.name))  # 2778225246032
print(id(dog2.type))  # 2240461703328 虽然id地址一样,但是仍然不一样


# 类中写属性,只能在init()方法中写
# 这里记住:虽然打印输出的id值一样(地址值),但实际上dog1.type和dog2.type不一样,是独立的两个.只是在Python解释器中为了运行效率,将同一个type的值进行了缓存

猜你喜欢

转载自www.cnblogs.com/huaibin/p/12097344.html