深入理解面向对象编程:如何将具体事物抽象成类并掌握Python中的类与self参数
最近,一个朋友问我:“什么是面向对象的编程?”,“为什么要使用面向对象的编程?”

我正在研究Python的许多朋友基本上放弃了“班级和面向对象的编程”一章,因为他们无法理解班级是什么以及自我参数的作用。
当我刚开始学习面向对象的编程时,当我说“将混凝土分为类别”时,我挠头很长时间。
了解面向对象的编程的概念就像学习自行车一样。一旦有了启蒙感,您就永远不会忘记它,但是什么时候可以启发?
今天,我将首先“将混凝土的东西分为类别”,然后“将它们定义为具体的事物”。
您能猜出这片抽象绘画显示的内容吗?
抽象具体的东西进入课堂
动物是一个很大的类别。如果将它们细分为细分,则可以将它们分为胎生动物和卵动物。可以进一步分割胎生动物...我们暂时不会解释...
所有动物都不能没有“呼吸,进食,喝和生婴儿”。我们可以将这些共同点直接写入动物,因为这四种是动物的基本行为,只有在那时才实例化(从抽象到实体),才能显示出来,因此将其写入“示例方法”。
class Animal:def eat(self):print("我会吃")def breath(self):print("我会呼吸")def drink(self):print("我会喝")def give_a_baby(self):print("生娃")
接下来是胎生动物和卵巢动物。胎生的婴儿天生与卵子动物所生的卵不同,因此我们需要在两个子类中重写父母类(动物类)的give_a_baby方法。
# 胎生动物class Vivipara(Animal):def give_a_baby(self):print("生了一个小宝宝")# 卵生动物class Vipara(Animal):def give_a_baby(self):print("生了一个蛋")
接下来,我们使用上述两个类来创建实例。
描述类别中的特定事物
我首先将胎生动物的类型形象化成一个“人”,他们可以吃,喝,呼吸和生育婴儿。
human = Vivipara() # 类的实例化操作human.eat()human.breath()human.drink()human.give_a_baby()
执行代码:
我会吃我会呼吸我会喝生了一个小宝宝
同样,我们还将蛋动物体现成“乌龟”。
tortoise = Vipara()tortoise.eat()tortoise.breath()tortoise.drink()tortoise.give_a_baby()
执行代码:
我会吃我会呼吸我会喝生了一个蛋
顺便说一句,您觉得缺少某些东西吗?
“人类”和“乌龟”如何被视而不见,甚至没有性别?尝试给男性生物一个婴儿”
我立即重写代码以使具体实例具有名称和性别(属性)。
如果要具有具体实例的属性,则需要使用constructor __init__传递该实例所需的属性值。
# 胎生动物class Vivipara(Animal):def __init__(self, name, sex):self.name = nameself.sex = sexdef give_a_baby(self):print(f"我是{self.name}")if self.sex == "母":print("生了一个小宝宝")else:print("我不会生娃")
如果我们想事后实例化此类,则需要带上名称和性别参数。
xiaoming = Vivipara("小明","公") # 带上参数实例化xiaohong = Vivipara("小红","母") # 带上参数实例化xiaoming.give_a_baby()xiaohong.give_a_baby()
执行结果:
我是小明我不会生娃我是小红生了一个小宝宝
这不是很有趣吗?
后记
“面向对象”的主要思想是将构成问题构成每个“对象”的每个事务分解。建立对象的目的不是要完成一个步骤,而是要在解决问题的整个步骤中描述事物的行为。
面向对象的编程中的概念主要包括:对象,类,数据抽象,继承,动态绑定,数据封装,多态性和消息传递。
通过这些概念,特别反映了面向对象的思想。面向对象的是解决问题的想法。面向对象的计算机语言最终通过封装目标对象的属性和行为来获得目标对象。
Python技术交换集团
扫描QR码以加入小组并获得相关资源。记住笔记:城市 +昵称 +技术方向