我是靠谱客的博主 爱听歌睫毛,最近开发中收集的这篇文章主要介绍python方法定义..._python笔记33:自定义类如何支持加减乘除?掌握这些方法就够了...主要内容:1. dir函数2. 支持运算符2.1 支持加法:2.2 Python类中运算符支持2.3 其他运算符支持:3. __call__方法:总结:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
主要内容:
- 小目标:运算符
- 主要内容:类方法,运算符支持
1. dir函数
dir([object]):返回object对象的属性与方法;
例如:
dir(10)
结果:
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', ... ]
2. 支持运算符
定义一个玫瑰花类:
class Rose:
def __init__(self, color, price):
self.color = color
self.price = pricer1 = Rose('red', 10)print(r1.price)
结果:10
2.1 支持加法:
两支玫瑰相加,返回总价钱:
r1+r1
结果:提示不支持加法操作
TypeError: unsupported operand type(s) for +: 'Rose' and 'Rose'
2.2 Python类中运算符支持
需要添加:__add__方法; 代码修改:
class Rose:
def __init__(self, color, price):
self.color = color
self.price = price
#支持加法运算符
def __add__(self, other):
return self.price + other.pricer1 = Rose('red', 10)print(r1+r1)
结果:20
- 多个玫瑰相加
print(r1+r1+r1)
结果:
unsupported operand type(s) for +: 'int' and 'Rose'
错误:因为__add__返回值为数字,数字与Rose对象不能相加;
如果要实现连加,__add__返回值必须为Rose对象;
2.3 其他运算符支持:
其他运算支持需要添加对应方法即可:
方法说明:
3. __call__方法:
目的:对象可以像函数一样调用,添加__call__方法;
代码实现:
class Car:
def __init__(self,name, price):
self.car_name = name
self.price = price
def __str__(self):
return 'Car name: %s price: %s'%(self.car_name, self.price)
def __repr__(self):
return 'name: %s price: %s'%(self.car_name, self.price)
def __call__(self):
print("car start run")car = Car('byd', 130000)car()
结果:
car start run
总结:
自定义类如何支持运算符,注意返回值;
直接调用对象:添加__call__方法;
最后
以上就是爱听歌睫毛为你收集整理的python方法定义..._python笔记33:自定义类如何支持加减乘除?掌握这些方法就够了...主要内容:1. dir函数2. 支持运算符2.1 支持加法:2.2 Python类中运算符支持2.3 其他运算符支持:3. __call__方法:总结:的全部内容,希望文章能够帮你解决python方法定义..._python笔记33:自定义类如何支持加减乘除?掌握这些方法就够了...主要内容:1. dir函数2. 支持运算符2.1 支持加法:2.2 Python类中运算符支持2.3 其他运算符支持:3. __call__方法:总结:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复