Python-面向对象编程-初始化

270 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

1. 初始化方法内部定义属性

在初始化方法内部定义属性

  • __init__方法内部使用 self.属性名=属性的初始值 就可以定义属性
  • 定义属性之后,再使用Cat类创建的对象,都会拥有该属性
  • 如果使用这个类创建出的对象默认就拥有某个属性,在初始化方法内部使用self.利用赋值语句就可以定义这个属性了
class Cat:
    def __init__(self):
        print("这是一个初始化方法")

        # self.属性名 = 属性的初始值
        self.name = "Tom"


# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat()

print(tom.name)

程序运行结果如下图所示:在初始化方法内部使用self.定义属性。程序运行后可以看出,tom对象默认就带有name属性了

image.png

2. 初始化的同时设置初始值

在开发中,如果希望在创建对象的同时,就设置对象的属性,可以对__init__方法进行改造

  1. 把希望设置的属性值,定义成__init__方法的参数
  2. 在方法内部使用self.属性=形参接收外部传递的参数
  3. 在创建对象时,使用类名(属性1, 属性2...)调用 希望使用这个类创建出来的对象就能直接拥有形参中传递的属性值。

代码示例如下所示:在def__init__()中设置了新形参new_name,初始化内部使用self.name来接收name属性,在创建对象时,直接在类的括号中传入实参Tom,就能够使这个对象拥有传递的属性值Tom。

class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")

        # self.属性名 = 属性的初始值
        self.name = new_name

    def eat(self):
        # 哪一个对象调用的方法,self就是哪一个对象的引用
        print("%s 爱吃鱼" % self.name)


# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")

print(tom.name)

lazy_cat = Cat("大懒猫")
lazy_cat.eat()

程序运行结果如下图所示:从图中可以看出,我们使用类创建出来的对象就能直接拥有形参中传递的属性值Tom和大懒猫。相当于是在初始化方法内部定义属性的基础上做了改进,使得程序更加灵活。

image.png