Python面向对象中的self到底是什么?

初次接触类的概念,在学习的网页上,对self的解释是self是方法的一个参数,在方法调用的时候,这个参数是默认传参数的。 我们看一个例子:

很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!

接着我们打印出self在内存中的id试试

输出如下

可以看出,在init函数,还是run函数,还是Stu实例化后的s,self在内存中的id都是相同的。 现在来解释上面标记的那句话 self是方法的一个参数:可以很明显的看到在上面的Stu类中,self是init方法中与name和age一样的参数 在方法调用的时候,这个参数是默认传参数的:我们在s = Stu(“zr”,18)中实例化Stu的时候,self参数我们并没有去赋值,而是默认传入的,谁实例化了Stu,谁就是self,init方法在执行时,self就是那个s

Python面向对象编程的三大特征分别是封装、继承和多态。 1. **封装**:封装是面向对象编程的核心概念之一,它指的是将数据(属性)和操作数据的方法封装在一个中,对外隐藏具体的实现细节,仅通过定义好的接口与外界交互。这种方式提高了代码的安全性和可维护性。例如,可以通过设置私有属性(如使用双下划线`__`修饰)来限制外部直接访问对象的内部状态,而只能通过提供的方法进行访问或修改。 2. **继承**:继承允许创建一个新(子),从已有的(父或基)那里继承属性和方法。这有助于代码重用并建立之间的层次关系。在 Python 中,一个子可以继承一个或多个父,并且可以覆盖或扩展父的功能。此外,Python 支持多级继承,即子可以进一步被其他继承[^3]。 3. **多态**:多态是指不同的对象对同一消息作出响应的能力,即同一个方法名可以在不同的中有不同的实现方式。这种特性使得程序具有更好的灵活性和扩展性。例如,如果有一个基`Animal`及其两个子`Dog`和`Cat`,它们都实现了`make_sound()`方法,那么即使我们不知道具体对象的型,也可以调用这个方法,让每个对象根据自己的实现发出声音。 这些特征共同构成了 Python 面向对象编程的基础,使得开发者能够编写出结构清晰、易于维护和扩展的代码。 ```python # 示例:简单的封装 class Student: def __init__(self, name, age): self.name = name self.age = age # 私有属性 self.__sex = None def set_sex(self, sex): self.__sex = sex def get_sex(self): return self.__sex # 使用封装 stu1 = Student('李四', 20) stu1.set_sex('女') print(stu1.name, stu1.age, stu1.get_sex()) # 输出: 李四 20 女 ``` ```python # 示例:继承 class Animal: def make_sound(self): pass class Dog(Animal): def make_sound(self): print("汪汪") class Cat(Animal): def make_sound(self): print("喵喵") # 多态示例 def animal_sound(animal): animal.make_sound() dog = Dog() cat = Cat() animal_sound(dog) # 输出: 汪汪 animal_sound(cat) # 输出: 喵喵 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值