python类的方法重写、property、运算符重载

本文介绍了Python类的特殊方法,如构造函数`__init__`、析构函数`__del__`等,以及如何实现运算符重载。同时讲解了`property`的使用,包括其作为受限制访问属性的语法以及`getter`、`setter`、`delete`方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python类专有方法

Python除了自定义私有变量和方法外,还可以定义专有方法。专有方法是在特殊情况下或使用特殊语法时由python调用的,而不是像普通方法一样在代码中直接调用。看到形如__XXX__的变量或函数名时就需要注意下

__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__div__: 除运算
__mod__: 求余运算
__pow__: 乘方
__del__:删除对象

例:在类中对__pow__、__cmp__进行运算符重载,主要对的两个成绩进行平方运算、比较两个成绩

class person(object):
    def __init__(self,name,chengji):
        self.chengji=chengji
        self.name=name
    def __pow__(self, power, modulo=None):
        return pow(self.chengji,2)
        # print(pow(self.chengji,2))

    def __cmp__(self, s):
        if (self.chengji < s.chengji):
            return s.chengji
        if (self.chengji > s.chengji):
            return self.chengji
        if (self.chengji == s.chengji):
            return "二者相等"


person1=person("小明",99)#实例化对象
person2=person("小红",88)#实例化对象

print(pow(person1,2))
print(person2.__cmp__(person1))

动态给实例添加属性和方法

例:动态给类添加方法,具体是对猫的类中没有设置奔跑的方法,在类外添加这个方法,并是打印显示

#创建类
#动态给实例添加属性和方法
from types import MethodType
class Cat():
    def __init__(self,name):
        self.name=name

cat1=Cat("大花猫")
def run(self):
    print(self.name+"跑跑跑")

cat1.run=MethodType(run,cat1)
cat1.run()

property

#property:可以让你对受限制访问的属性使用点语法

property() 函数的作用是在新式类中返回属性值

1.语法:

class property([fget[, fset[, fdel[, doc]]]])

2.参数:

fget -- 获取属性值的函数

fset -- 设置属性值的函数

fdel -- 删除属性值函数

doc -- 属性描述信息

3.方法:

property对象有三个方法getter(), setter()和delete(),用来在对象创建后设置fget,fset和fdel。

4.返回值:返回新式类属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值