python学习之面向对象编程(二)

本文深入探讨Python中的面向对象编程,包括静态方法和类方法的概念,以及继承和多态的基本原理。通过实例解释了如何使用静态方法验证三角形的边长,介绍了继承中子类对父类的拓展以及Python的多重继承特性。同时,讨论了多态的概念,以员工薪资结算系统的例子展示了不同子类如何根据自身特性重写父类方法。
摘要由CSDN通过智能技术生成

python 学习-------面向对象编程进阶

静态方法和类方法

我们在类里面写的函数,通常称为方法,它们基本上都是发给对象的消息
但是有的时候,我们的消息并不是想发给对象,而是希望发给类

比如定义一个三角形类,通过传入三条边的长度来构造三角形,并提供计算周长和面积的方法。计算周长和面积肯定是三角形对象的方法,这一点毫无疑问。但是在创建三角形对象时,传入的三条边长未必能构造出三角形为此我们可以先写一个方法来验证给定的三条边长是否可以构成三角形,这种方法很显然就不是对象方法,因为在调用这个方法时三角形对象还没有创建出来。我们可以把这类方法设计为静态方法类方法,也就是说这类方法不是发送给三角形对象的消息,而是发送给三角形类的消息.

静态方法:发给类的消息可以使用@staticmethod装饰器

class Triangle:
    def __init__(self, a, b, c):
        if not Triangle.is_valid(a, b, c):
            raise ValueError('无效的边长,无法构成三角形')
        self.a = a
        self.b = b
        self.c = c

    @staticmethod
    def is_valid(a, b, c):
    	"""判断三条边长能否构成三角形(静态方法)"""
        return a + b > c and a + c > b and c + b > a

    def perimeter(self):
        perimeter = self.a + self.b + self.c
        return perimeter

    def area(self):
        p = (self.a + self.b + self.c) / 2
        area = (p * (p - self.a) * (p - self.b) * (p - self.c)) ** 0.5
        return area


if __name__ == '__main__':
    print('输入三条边长:')
    a, b, c = map
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值