什么是面向对象的编程?
顾名思义,面向对象编程是计算机编程中的一种技术,它将数据和方法表示为“对象”。它们确保创建整洁和可重用的代码,以便将程序划分为独立的对象或几个小型程序。
对象有两个特征:属性、行为。
举一个汽车的例子:
- 汽车的属性:颜色,制造年份,制造商。
- 行为/特征:呼噜,刹车,加速。
在python中,面向对象编程遵循以下原则:类、对象、方法、继承、多态性、数据抽象和封装。
面向对象编程原理
1.班级
类就像对象构造函数,或者是通过定义公共属性和行为来创建对象的“蓝图”。
在Python中,类是使用关键字“class”定义的。让我们定义一个CAR`python类CAR:#class Attributes Color=“Red”Yom=“2015”Model=“Mazda”Pass‘`’‘--祝贺您定义了一个类,但是您将意识到任何程序的最终目标都是一个结果。
不幸的是,定义的类将顺利运行,但不会给出结果。我们将在对象中处理这个问题--上面的示例是一个最简单的类,在实际应用程序中并不真正有用。在实际应用程序中,类需要是动态的。因此,我将引入‘__init_()’函数,它总是在类被初始化时执行(了解更多关于函数的内容)。为了简化定义,让我们考虑一只狗,根据科学分类,它属于这一物种。
犬狼疮现在,当你进行科学分类的时候,你会意识到亚种有不同的属性,比如颜色,体重,身高,用这些信息来定义一个类别的狗。
`‘python类狗:物种=’Canis lupus‘def_init__(自我、颜色、重量、高度)
:自.色=颜色自我.重量=重量.高度=高度.`’python类汽车:
def_init__(Self_init_(Self,Color,Yom,Model):
Sel.color=color Self.YOM=Yom Self.Model=Model`
‘就像汽车定义的那样,代码将运行,但没有最终结果.为了解决这个问题,请允许我在O.O.P.
对象的下一个概念中引入实例化。
2.Object
要访问类的属性,我们需要在类之外创建一个实例(事件),我们可以简单地将一个对象定义为一个类的实例。
考虑到汽车的例子,以下面的例子为例:
**Car1;颜色:白色,Yom:2015,型号:丰田
**Car2;颜色:蓝色,Yom:2012,型号:Audi
class Car:
def __init__(self,color,YOM,model):
self.color = color
self.YOM = YOM
self.model = model
Car1 = Car('white','2015','Toyota')
print ( f'This is a {Car1.color},{Car1.model},manufactured in {Car1.YOM}')
结果:
This is a white,Toyota,manufactured in 2015
在本例中,Car1是一个对象,通过它我们可以访问Carl类的所有属性。
Car1 = Car()
继续,尝试在Car2之外创建一个对象,如上面所述谷歌Colab
3.Method
回顾类的定义,我们提到对象有两个属性:属性和行为。现在,简单地说,方法是定义对象行为的一种方法。
从汽车的例子来看,我们可以说一辆车有以下行为:它呼啸,它加速,它刹车
因此,让我们用它创建一个方法。
class Car:
def __init__(self,color,YOM,model):
self.color = color
self.YOM = YOM
self.model = model
#method
def hoot(self):
return('Pipippipi')
要访问该方法,我们必须创建一个实例
Car3 = Car('Blue','2018','Mazda')
Car3.hoot()
print(f'The {Car3.color},{Car3.YOM},{Car3.model} is hooting {Car3.hoot()}')
结果:
The white,2016,Mazda is hooting Pipippipi
加法
方法可分为3类:
-实例法
-类方法
-静态法
我将在下一篇文章中深入研究这些方法及其应用,并保持良好的联系。
4.Inheritance
在现实生活中,孩子可以部分或完全继承父母的某些属性和行为。
现在,编程场景中,继承允许我们定义一个子类,它继承父类中的所有方法和属性。
注意:子类可以通过以下方式继承某些方法和属性
父类名称依尼特 ()
功能。此外,它还可以从父类继承所有方法和属性,并使用
超级()依尼特 ()
功能。我们将分别在下面的示例中处理这两个问题。
例1:部分继承
#Parent Class
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
#method
def printname(self):
print(self.firstname, self.lastname)
#child class
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
示例2:完全继承
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
#method
def printname(self):
print(self.firstname, self.lastname)
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2019
5.Polymorphism
想象一下,您的任务是创建一个计算用户提供的任意形状面积的程序。现在,这是引入多态性的完美情况,这意味着不同的形式。
在编程世界中,多态性是指同名函数具有完全不同功能的能力。它创建了一个可以使用多种形式的对象的结构。
示例(类方法的多态性)
class whale:
def swim(self):
print("The whale is swimming.")
def swim_backwards(self):
print("The whale cannot swim backwards, but can sink backwards.")
def skeleton(self):
print("The whale's skeleton is made of cartilage.")
class Starfish():
def swim(self):
print("The Starfish is swimming.")
def swim_backwards(self):
print("The Starfish can swim backwards.")
def skeleton(self):
print("The Starfish's skeleton is made of bone.")
waza = whale()
herod = Starfish()
for fish in (waza, herod):
fish.swim()
fish.swim_backwards()
fish.skeleton()
产出:
The whale is swimming.
The whale cannot swim backwards, but can sink backwards.
The whale's skeleton is made of cartilage.
The Starfish is swimming.
The Starfish can swim backwards.
The Starfish's skeleton is made of bone.
6.数据提取
为便于理解,请考虑您的T.V遥控器,“+”按钮,它用于增加容量,您可以使用该按钮,但您无法看到操作是如何进行的。这是一个抽象的完美例子。
在Python中,数据抽象可以定义为隐藏应用程序的所有无关数据/进程,以降低复杂性和提高程序的效率。
如果您曾经使用过Django框架,那么在创建模型时请考虑:
from django import models
class student(models.Model)
pass
这是一个抽象的完美例子。
在以后的文章中,我将进一步讨论抽象方法和类。
7.Encapsulation
封装是一种面向对象的编程概念,它将操作数据的数据和函数绑定在一起,并确保数据不受外部干扰和滥用。数据封装导致了重要的面向对象的数据隐藏概念。
结尾
本篇文章就分享到这里啦!!往期文章欢迎大家观看学习!
每篇文章的项目都是可免费获取的私信小编即可啦。
Python资料分享、粉丝交流解答群!进来看看呀~~
点击链接加入群聊【python小白解答交流群】:https://jq.qq.com/?_wv=1027&k=0Rqbyi0m