在我们面向对象时,对象的属性能不能在实例化对象时,直接进行设置呢?

答:可以,但是需要使用魔术方法__xxx__()),指的是具有特殊功能的函数

①__init__()方法(初始化方法或构造方法)

思考:人的姓名,年龄等信息都是与生俱来的属性,可不可以在生产的过程中就赋予这些属性呢?

答:可以,使用__init__()方法,其作用:实例化对象时,连带其中的参数,会一并传给__init__函数自动并执行它。__init__()函数的参数列表会在开头多出一项,它永远指带新建的那个实例对象,python语法要求这个参数必须要有,名称为self。

在对象初始化时执行,其作用就是在对象初始化时,对对象进行初始化操作(如赋予属性)

案例:

#1,定义一个类
class Person():
    #初始化实例对象属性
    def __init__(self,neme,age):
        #赋予name,age属性给实例化对象本身
        self.name = neme  #self.实例化对象属性 = 参数
        self.age = age
#2,实例化对象并传入初始化属性值
p1 = Person('孙悟空',500)

#3,调用p1对象自身属性name,age
print(p1.name)
print(p1.age)

注意说明:

(1)__init__()方法,在创建一个对象时默认被调用,不需要手动调用
(2)__init__(self)中的self参数,不要要开发者传递,python解释器会自动把当前的对象引用传递过去。

②__str__()方法

当使用print输出对象的时候,默认打印出该对象的内存地址。如果类定义了__str__()方法,那么就会打印从这个方法中return的数据

在类的外部,使用print方法输出对象时被触发,其主要功能是对对象进行打印输出操作,要求方法必须使用return返回字符串格式的数据

案例:

#1,定义一个类
class Car():
    #初始化实例对象属性
    def __init__(self,brand,model,color):
        #赋予name,age属性给实例化对象本身
        self.brand = brand  #self.实例化对象属性 = 参数
        self.model = model
        self.color = color

    #为了得到汽车的相关信息,定义一个方法,用于信息输出
    # def print_info(self):
    #     print(f'汽车品牌:{self.brand},汽车型号:{self.model},汽车颜色:{self.color}')

    #定义一个__str__内置魔术方法,用于输出小汽车的相关信息
    def __str__(self):
        return f'汽车品牌:{self.brand},汽车型号:{self.model},汽车颜色:{self.color}'
        #必须使用return返回必须时 字符串
#2,实例化对象并传入初始化属性值
c1 = Car('奔驰','S600','黑色')
# c1.print_info()
print(c1)

③__del__()方法(删除方法或析构方法)

当删除对象是,python解释器会默认调用__del__()方法

在对象被del删除时触发其主要作用用于关闭文件,关闭数据库链接等等

案例:

#1,定义一个类
class Person():
    #初始化实例对象属性
    def __init__(self,neme,age):
        #赋予name,age属性给实例化对象本身
        self.name = neme  #self.实例化对象属性 = 参数
        self.age = age

    #析构方法__del__()方法
    def __del__(self):
        print(f'{self}对象已经被删除')
#2,实例化对象并传入初始化属性值
p1 = Person('白骨精',100)

#3,删除对象p1
del p1

__del__()方法在使用过程中,比较简单,但在其实际开发中,有何作用呢?

答:主要用于关闭文件操作,关闭数据库连接等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值