魔法方法——Python

  • 特征即是属性
  • 行为即是方法
  • self表示调用该函数的对象

魔法方法
在Python中, __ xx_()的函数叫做魔法方法,指的是具有特殊功能的函数。
init():初始化对象

class Washer():
    def __init__(self):
        #添加实例属性
        self.width=500
        self.height=800
        #不能有返回值 None
    def print_info(self):
        print(f'洗衣机的宽度是{self.width},高度是{self.height}')

haier=Washer()
haier.print_info()
输出:
洗衣机的宽度是500,高度是800
#init()方法:在创建一个对象时默认被调用,不需要手动调用
#init(self)中的self参数,不需要开发者传递,Python解释器会自动把当前的对象引用传递过去

带参数的init方法

class Washer():
    def __init__(self,width,height):
        #添加实例属性
        self.width=width
        self.height=height
    def print_info(self):
        print(f'洗衣机的宽度是{self.width},高度是{self.height}')

haier=Washer(10,20)
haier.print_info()
输出:
洗衣机的宽度是10,高度是20

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

class Washer():
    def __init__(self,width,height):
        #添加实例属性
        self.width=width
        self.height=height
    def print_info(self):
        print(f'洗衣机的宽度是{self.width},高度是{self.height}')
    def __str__(self):
        return '这是海尔洗衣机的说明书'

haier=Washer(10,20)
print(haier)
输出:
这是海尔洗衣机的说明书

dict函数
类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类__dict__里的

  • 1) 内置的数据类型没有__dict__属性
  • 2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__
  • 3) 对象也有自己的__dict__属性, 存储self.xxx 信息,父子类对象公用__dict__
class MoonCake():
    def __init__(self,name,date):
        self.name=name
        self.date=date
mooncake=MoonCake('五仁月饼',8.15)
print(mooncake.__dict__)

del方法
当删除对象时,Python解释器会默认调用del()方法

class Washer():
    def __init__(self,width,height):
        #添加实例属性
        self.width=width
        self.height=height
    def print_info(self):
        print(f'洗衣机的宽度是{self.width},高度是{self.height}',end='\n')
    def __str__(self):
        return '这是海尔洗衣机的说明书'
    def __del__(self):
        print(f'{self}对象已被删除')

haier=Washer(10,20)

del haier
输出:
这是海尔洗衣机的说明书对象已被删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值