我是靠谱客的博主 爱听歌睫毛,最近开发中收集的这篇文章主要介绍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 其他运算符支持:

其他运算支持需要添加对应方法即可:

方法说明:

066039f5d42102359291f9efb515a528.png

运算符支持

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__方法:总结:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部