文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 面向对象编程(2)

2023-08-31 16:15

关注

在这里插入图片描述

文章目录

前面我们介绍了 python 类和对象以及继承、私有权限,那么今天我们将来介绍 python面向对象 剩下的两大特性封装、多态,以及如何访问、修改类属性、类方法和静态方法的介绍。🚗🚗🚗

Python中的封装是一种面向对象编程的概念,它将数据和操作这些数据的方法封装到一个单独的单元中,这个单元通常被称为类(Class)。封装的基本思想是将数据和相关的操作(方法)组合在一起,形成一个相对独立的、可复用的整体。

封装的目的是隐藏对象的内部实现细节,只向外部暴露一些必要的接口,通过这些接口来访问和操作对象的状态。这样做的好处是增强了代码的可读性和可维护性,同时也提高了代码的安全性。

我们在类中定义的属性和方法都可以看做是封装。

class Person():    name = 'zhangsan'    age = 18    gender = 'man'        def print_info(self):        print(f'一位名叫{self.name}{self.age}{self.gender}')

定义name、age、gender以及方法print_info都叫做封装。

多态是一种可以根据不同的对象类型执行不同的操作的能力。它允许多个不同的对象对相同的消息作出响应,以各自独特的方式执行操作,从而实现了代码的灵活性和可扩展性。

在 Python 中,多态性是通过方法的动态绑定和方法重写来实现的。具体来说,当一个对象调用一个方法时,实际执行的是与对象类型相关联的方法。

python 的多态不是只能依赖于继承,但是最好依赖于继承。

python 多态的实现步骤:

  1. 定义父类,并提供公共方法
  2. 定义子类,并重写父类方法
  3. 传递子类对象给调用者,可以看到不同子类执行效果不同
class Animal():    def speak(self):        passclass Cat(Animal):    def speak(self):  # 重写父类方法来实现多态        print('喵喵喵')class Dog(Animal):    def speak(self):  # 同样重写父类方法,实现多态        print('汪汪汪')cat = Cat()dog = Dog()cat.speak()  # 喵喵喵dog.speak()  # 汪汪汪

我们通过继承自一个父类的实例对象来调用同一个方法而实现了不同的功能,这就是多态的灵活性。

定义以及访问类属性

class Person():    name = 'zhangsan'person1 = Person();print(person1.name)  # 通过实例对象来访问类属性  zhangsanprint(Person.name)  # 通过类对象来访问类属性  zhangsan

修改类属性

修改类属性只能使用 类名.类属性 = 值 来修改类属性。

class Person():    name = 'zhangsan'person1 = Person();Person.name = 'lisi'print(Person.name)  # lisiprint(person1.name)  # lisi

那么如果我们要使用 实例对象.类属性 = 值 会出现什么情况呢?

class Person():    name = 'zhangsan'person1 = Person();person1.name = 'lisi'print(Person.name)  # zhangsanprint(person1.name)  # lisi

**如果我们使用 实例对象.类属性 = 值 实际上修改的是实例属性。

实例属性

实例属性其实是另外开辟了一份与类属性同名的一块内存,修改实例属性并不会影响类属性。
在这里插入图片描述

class Person():    name = 'zhangsan'person1 = Person()person2 = Person()print(person1.name)  # zhangsanprint(person2.name)  # zhangsanperson1.name = 'lisi'print(person1.name)  # lisiprint(person2.name)  # zhangsanperson2.name = 'wangwu'print(person1.name)  # lisiprint(person2.name)  # wangwu

在这里插入图片描述

在 Python 中,类方法是一种特殊类型的方法,它与类本身相关联而不是与实例(对象)相关联。类方法可以在不创建类实例的情况下访问和操作类的属性和方法。

要定义一个类方法,需要使用 @classmethod 装饰器,将其放置在方法定义的上方。类方法的第一个参数通常被命名为 cls,它表示对类本身的引用。通过这个参数,可以访问类的属性和调用其他类方法。

class Account():    Account_name = '1234567'    __Account_password = '987654'    @classmethod    def get_password(cls):        return cls.__Account_passwordresult1 = Account.get_password()print(result1)  # 987654account1 = Account()result2 = account1.get_password()print(result2)  # 987654

在 Python 中,静态方法是一种与类相关联的方法,它不需要访问类的实例或实例的属性。静态方法可以在不创建类实例的情况下调用,它归属于类而不是对象。

要定义一个静态方法,需要使用 @staticmethod 装饰器,将其放置在方法定义的上方。静态方法没有特殊的参数,它们不会自动传递类或实例的引用。

class Person():    @staticmethod    def print_info():        print('这是一个静态方法')Person.print_info()  # 这是一个静态方法person1 = Person()person1.print_info()  # 这是一个静态方法

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_73888323/article/details/131710177

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯