25 - 面向对象2 - __init__():初始化方法

目录

一、魔法方法

1、概念

2、学习步骤

二、初始化方法:__init__()

1、作用

2、调用时机

3、应用场景

三、对象添加属性的两种方式

1、在类的外部

2、在初始化方法中给对象添加属性

四、举例说明-创建对象时自动调用初始化方法,且给对象添加属性


一、魔法方法

1、概念

  • 在Python中存在一类方法,以两个下划线开头,两个下划线结尾;

  • 在满足某个条件的情况下,会自动调用,这一类方法,称之为魔法方法。

2、学习步骤

  • 作用

  • 自动调用的时机(什么情况下会自动调用);

  • 应用场景(什么时候可以使用魔法方法);

  • 注意事项;

  • 举例说明;

二、初始化方法:__init__()

1、作用

  • __init__()方法是专门用来定义一个对象具有哪些属性的方法,创建对象(类名( ))的时候会自动调用。

2、调用时机

  • 在创建对象之后,会自动调用,为对象在内存中 分配空间。

3、应用场景

  • 给对象添加属性,为对象的属性 设置初始值。

三、对象添加属性的两种方式

1、在类的外部

25 - 面向对象2 - __init__():初始化方法_第1张图片

注意:这种给对象添加属性的方式不推荐。

2、在初始化方法中给对象添加属性

25 - 面向对象2 - __init__():初始化方法_第2张图片

注意:如果 属性是会变化的,则可以将这个属性的值作为参数传递,在创建对象的时候,必须传递实参值。

class Cat:
    # __init__()方法是专门用来定义一个对象具有哪些属性的方法。
    # 在创建对象时,会自动调用,为对象在内存中 分配空间。
    # 给对象添加属性,为对象的属性 设置初始值。
    def __init__(self,name):
        print('初始化方法~')
        # 在创建对象的同时,给对象添加一个name属性
        # 在类的方法的内部,通过 self.属性名 = 形参 接收创建对象时外部传递的实参值。
        self.name = name


    def eat(self):
        print(f"{self.name}:爱吃鱼...\n")



# 通过tom类创建一个对象
tom = Cat
# 在创建对象时,通过 类名(属性1的实参,属性2的实参......)给初始化方法中所定义的对象属性传值。
t = tom('黏黏')
t.eat()

四、举例说明-创建对象时自动调用初始化方法,且给对象添加属性

class Cat:
    # __init__()方法是专门用来定义一个对象具有哪些属性的方法。
    # 在创建对象时,会自动调用,为对象在内存中 分配空间。
    # 给对象添加属性,为对象的属性 设置初始值。
    def __init__(self,name):
        # 验证使用,正式代码中不需要
        print('我是__init__()方法,我被调用啦~')
        # self:调用__init__()方法的对象
        #形参name的值 = 创建对象时传入的实参
        self.name = name


    def eat(self):
        print(f"{self.name}:爱吃鱼...\n")


# __init__()方法 创建对象的时候,会自动调用
# 举例说明-是否自动调用__init__()方法的几种场景
"""
自动调用__init__():
    (1)Cat()  原因:这是创建对象
    (2)tom = Cat
         t = tom()  原因:此时tom也是一个类,可以操作Cat中的所有属性和方法,所以此时tom()是在创建对象
"""
"""
不自动调用__init__():
    (1)Cat         原因:这不是创建对象
    (2)tom = Cat   原因:不是创建类,此时tom也是个类
    (3)t1 = t      原因:不是创建对象,只是引用的传递
"""
# 通过Cat类创建一个对象
# 如果 属性是会变化的,则可以将这个属性的值作为参数传递,在创建对象的时候,必须传递实参值。
blue_cat = Cat('蓝猫')
blue_cat.eat()

# 通过tom类创建一个对象
tom = Cat
t = tom('黏黏')
t.eat()

25 - 面向对象2 - __init__():初始化方法_第3张图片

你可能感兴趣的