Python:什么是面向对象的编程?

什么是面向对象的编程?

顾名思义,面向对象编程是计算机编程中的一种技术,它将数据和方法表示为“对象”。它们确保创建整洁和可重用的代码,以便将程序划分为独立的对象或几个小型程序。

对象有两个特征:属性、行为。

举一个汽车的例子:

  • 汽车的属性:颜色,制造年份,制造商。
  • 行为/特征:呼噜,刹车,加速。

在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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值