Python 魔法函数

###__add__ 魔法函数(与之相关的__radd__反向加法)
'''
触发时机:使用对象进行运算相加的时候自动触发
功能:对象运算
参数:二个对象参数
返回值:运算后的值
'''

class MyClass():
    def __init__(self,num):
        self.num=num
    #对象在 加号+ 的左侧时,自动触发
    def __add__(self, other):
      ##self 接受的是对象
      ##other 接受的是
        return self.num+other
    ##对象在 加号+ 的左侧时,自动触发
    def __radd__(self, other):
        return self.num+other*3

#add方法
a=MyClass(10)
res=a+1
print(res)

##(2)radd方法
b=MyClass(5)
res=3+b
print(res)

##(3)对象+对象
'''
先触发add方法
self 接收a
other 接收b
return self.num+other => return 10+b

后触发radd方法
self 接收b
other 接收10
return self.num + other*3 => 5+10*3=35
'''
res=a+b
print(res)


'''__len__魔法函数'''
'''
触发时机:使用len(对象)的时候自动触发
功能:用于检测对象中或者类中成员个数
参数:一个self接收当前对象
返回值:必须返回整型
'''
class MyClass():
    pty1=1
    pty2=2
    __pty3=3

    def func1(self):
        print(1)
    def func2(self):
        print(2)
    def func3(self):
        print(3)

    def __len__(self):
        return 6

obj=MyClass()
res=len(obj)
print(res)

Python中的魔法函数是以双下划线开头和结尾的函数,可以让我们自由地定义自定义类的特性。这些魔法函数Python中有多种用途,比如实现运算符重载、属性访问控制、对象创建和初始化等。通过定义魔法函数,我们可以为自己的类增加一些特殊的行为和功能。 例如,__new__()方法是一个特殊的魔法函数,在创建新对象时隐式调用。它返回一个新的对象,并在之后由__init__()方法初始化该对象。__init__()方法用于初始化对象的属性和状态。这两个魔法函数通常是在类的定义中同时使用的。 另外,__str__()方法也是一个常用的魔法函数,用于返回对象的字符串表示。通过在类中定义__str__()方法,我们可以自定义对象的字符串表达形式,使其更易于阅读和理解。 总结来说,Python魔法函数是一种特殊的函数,通过以双下划线开头和结尾的命名规则,可以实现自定义类的特性和行为。这些魔法函数Python中有广泛的应用,包括运算符重载、属性访问控制、对象创建和初始化等方面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [17.Python中的魔法函数](https://blog.csdn.net/bai666ai/article/details/123974233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值