面向对象三大特征

本文探讨了Python中的特殊方法,如`__private`属性的使用,尽管可以访问但依赖于君子协议来避免使用。通过内置函数`dir()`展示对象属性,重写`__str__`方法自定义打印输出。同时,对比了Python(动态语言)与JAVA(静态语言)的多态实现。强调特殊方法在满足特定需求时通常需要自定义实现。

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

在这里插入图片描述
**哈哈 好一个君子协议 我们封装起来的一些属性不希望被外部使用(类似c++重点私有) 所以加__ 但实际上依旧能访问到 所以访问不访问 全靠君子协议 **
在这里插入图片描述
通过内置函数dir(stu)打印出这个对象里面所有属性
在这里插入图片描述
重写__str__ 这个属性 如果直接打印这个对象 默认是调用__str__ 上面是重写后的打印
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
类对象加括号代表着实例化 上面例子刚好是实例化过程不需要传参数 所以看上去就像类对象直接空括号
在这里插入图片描述
JAVA静态语言 Python动态语言 静态语言想要实现多态 必须明确他的继承关系 父类 动态语言 只关心对象的行为 类型什么的不关心

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

特殊方法基本上都要自己重新实现来满足需求

### Python 面向对象编程的三大特性 #### 1. 封装 封装是一种将数据(属性)和行为(方法)绑定到一起的技术,通过访问控制来隐藏内部实现细节。在 Python 中,可以通过使用私有属性(以双下划线开头 `__` 的变量名)来限制外部直接访问这些属性[^2]。为了操作这些私有属性,通常会提供公共接口,即 getter 和 setter 方法,分别用于读取和设置私有属性的值。 以下是封装的一个简单示例: ```python class Person: def __init__(self, name, age): self.__name = name # 私有属性 self.__age = age # 私有属性 def get_name(self): # 获取私有属性的方法 return self.__name def set_age(self, age): # 设置私有属性的方法 if age >= 0: self.__age = age else: raise ValueError("年龄不能为负") person = Person("Alice", 30) print(person.get_name()) # 输出 Alice person.set_age(35) # 修改年龄 ``` #### 2. 继承 继承是面向对象编程的核心特性之一,它允许创建一个新的类(子类),基于已有的类(父类)进行扩展或修改。这样可以减少重复代码并提高代码的可维护性和复用性[^3]。在 Python 中,默认情况下所有的类都继承自 `object` 类[^5]。 下面是一个简单的继承例子: ```python class Animal: def speak(self): return "动物发出声音" class Dog(Animal): def speak(self): # 覆盖父类方法 return super().speak() + ", 狗吠叫" dog = Dog() print(dog.speak()) # 输出 动物发出声音, 狗吠叫 ``` #### 3. 多态 多态是指同一个方法调用可以在不同的对象上表现出不同形式的能力。这种能力使得程序设计更加灵活,因为相同的接口可以根据实际的对象类型执行不同的逻辑[^4]。在 Python 中,由于其动态类型的特性,多态表现得尤为自然。 以下展示了如何利用多态处理不同类型的对象: ```python class Cat: def sound(self): return "喵呜" class Bird: def sound(self): return "叽喳" def make_sound(animal): print(animal.sound()) cat = Cat() bird = Bird() make_sound(cat) # 输出 喵呜 make_sound(bird) # 输出 叽喳 ``` --- ### 总结 Python面向对象编程支持封装、继承和多态这三种核心特性。它们共同作用于构建复杂而高效的软件系统,其中封装提供了安全性,继承促进了代码重用,多态增强了灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值