Python 4 面向对象

本文深入解析面向对象编程的三大核心特性:封装、继承和多态。通过具体示例,阐述了静态属性、动态属性、私有属性的概念,以及类方法、静态方法和@property的应用。同时,介绍了继承的实现方式和多态的运用,帮助读者更好地理解和掌握面向对象编程的基础。

相关概念:

静态属性:定义在类中、__init__外的属性

动态属性:定义在__init__中的属性

私有属性:以__开头的属性

类方法:@classmethod,把一个方法变成一个操作类的方法,不依托于对象,可以直接被类调用。比如修改静态属性。有一个固定的参数cls。

class Goods(object):
    discount = 1
    def __init__(self, name, price):
        self.name = name
        self.price = price * self.discount

    @classmethod
    def change_discount(cls, new_discount):
        cls.discount = new_discount

Goods.change_discount(0.8)
potato = Goods("potato", 100)
print(potato.price)
类方法示例

静态方法:@staticmethod,在完全面向对象的程序中,如果一个函数既和对象没有关系,又和类没有关系,就把这个函数变成一个静态方法,可以通过类名点这个方法执行。没有默认的参数。

class Login(object):
    def __init__(self, user, pwd):
        self.user = user
        self.pwd = pwd

    def login(self):
        pass

    @staticmethod
    def get_usr_pwd():
        user = input("请输入用户名")
        pwd = input("请输入密码")
        Login(user, pwd)

Login.get_usr_pwd()
静态方法示例

@property:可以让一个方法变成属性。

 

面向对象三大特性:封装、继承、多态

一、封装

封装就是将内容封装到某个地方,以后需要使用时去这个地方调用。

应用:Flask中的RequestContext

 

二、继承

子类可以使用父类中中的属性和方法,减少重复。

应用:restframework视图函数

重写父类中的方法:

class Base(object):
    def __init__(self,name):
        self.name = name
    
    def run(self):
        print(self.name + "正在跑")

class Son(Base):
    def run(self):
         #方式一
         Base.run(self)
         #方式二
         super(Son,self).run()

继承的顺序:

在新式类中,类继承的顺序是广度优先,在经典类中继承的顺序是深度优先。

 

三、多态

python天生支持多态,对数据类型不敏感,可以传不同类型的参数,做同样的事情

多态指的是一类事物有多种形态。

举例:创建两个类,猫类和狗类,都定义一个run方法,一个打印猫在跑,一个打印狗在跑。定义一个函数,传入一个对象,执行这个对象的run方法。猫类和狗类都可以传入,他们都有run方法,但是得到了不同的结果。

转载于:https://www.cnblogs.com/yinwenjie/p/10847459.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值