Python之面向对象

1. 面向对象编程简介

面向对象编程(Object-Oriented Programming,简称OOP),是现代编程语言的一种流行的编程范型。相比于传统的面向过程编程,面向对象编程的思想更符合人类思维模式,让代码更易于理解、维护、扩展。

在面向对象编程的思想中,万物皆为对象,每个对象都有其自身的属性和行为,而不仅仅只是一个函数或者一个变量。这样设计出的程序更加模块化,可以更加有效地提升代码复用性和可维护性。

下面我们使用Python的面向对象编程来实现猫和狗的交互示例,以便更好地理解面向对象编程思想。

class Dog:

def __init__(self, name):

self.name = name

def bark(self):

print('汪汪,我是{}。'.format(self.name))

class Cat:

def __init__(self, name):

self.name = name

def meow(self):

print('喵喵,我是{}。'.format(self.name))

dog = Dog('小黄')

cat = Cat('小花')

dog.bark() # 输出:汪汪,我是小黄。

cat.meow() # 输出:喵喵,我是小花。

在这个示例中,我们定义了两个类:狗和猫。类是面向对象编程中的一个重要概念,它定义了一种新的数据类型,通过类可以创建多个对象实例。

在狗和猫的类中,我们分别定义了初始化方法和行为方法,并使用这两个类分别创建了两只狗和猫的实例,进而调用它们的行为方法。

2. Python中的面向对象编程

2.1 类的定义

在Python中,使用关键字class来定义一个新的类,同时在类的名称后面使用圆括号指定基类。

下面我们使用代码来定义一个汽车类,并创建一辆新车的实例。

class Car:

def __init__(self, brand, model, year):

self.brand = brand

self.model = model

self.year = year

def get_description(self):

desc = '{} {} ({})'.format(self.brand, self.model, self.year)

return desc

my_car = Car('Tesla', 'Model 3', 2020)

print(my_car.get_description()) # 输出:Tesla Model 3 (2020)

在这个示例中,我们定义了一个Car类,它有三个属性:brandmodelyear。同时我们定义了一个get_description方法,用于返回汽车的描述信息。

我们创建了一辆新车的实例,并输出它的描述信息。

2.2 对象的创建

在Python中,要使用创建一个对象,可以通过在类名后添加一对圆括号来实现:

class MyClass:

...

obj = MyClass()

MyClass类中,我们可以定义一些属性和方法,然后使用这个类来创建多个实例对象。每个实例对象都是独立的,它们之间不会相互影响。我们可以修改一个实例对象的属性,而不会影响到其它的实例对象。

c1 = Car('Tesla', 'Model 3', 2020)

c2 = Car('Porsche', 'Taycan', 2021)

c1.year = 2019 # 修改c1的年份

print(c1.get_description()) # 输出:Tesla Model 3 (2019)

print(c2.get_description()) # 输出:Porsche Taycan (2021)

在上面的示例中,我们创建了两个汽车的实例,分别是c1c2。我们修改了c1的年份属性,不会影响到c2

2.3 类的继承

在面向对象编程中,一种重要的思想就是类的继承。继承是指在一个已有的类的基础上,创建一个新的类,新的类继承了已有类的所有属性和方法,同时还可以添加自己的属性和方法。

在Python中,通过在新的类名后面使用圆括号指定其基类,就可以实现类的继承。

class ElectricCar(Car):  # ElectricCar类继承自Car类

def __init__(self, brand, model, year, battery_size):

super().__init__(brand, model, year) # 调用父类的构造方法

self.battery_size = battery_size

def get_battery_size(self):

return self.battery_size

my_electric_car = ElectricCar('Tesla', 'Model S', 2020, 100)

print(my_electric_car.get_description()) # 输出:Tesla Model S (2020)

print(my_electric_car.get_battery_size()) # 输出:100

在这个示例中,我们创建了一个新的类ElectricCar,它继承了Car类。我们重写了__init__方法,在这个方法中既调用了父类的构造方法,又增加了电池容量battery_size属性。

我们创建了一辆电动汽车的实例,既可以调用get_description方法输出其描述信息,又可以调用get_battery_size方法获得其电池容量。

2.4 多态性

多态性是指不同类的对象可以对同一个方法做出不同的响应。在面向对象编程中,多态性是指通过基类定义的统一的接口,来调用不同子类实现的方法。

在Python中,多态性通过方法的重写来实现。例如在上面的示例中,我们可以在ElectricCar类中重写get_description方法,来给电动汽车增加描述信息。

class ElectricCar(Car):  # ElectricCar类继承自Car类

def __init__(self, brand, model, year, battery_size):

super().__init__(brand, model, year) # 调用父类的构造方法

self.battery_size = battery_size

def get_description(self):

desc = '{} {} ({}) with a {}-kWh battery'.format(

self.brand, self.model, self.year, self.battery_size)

return desc

my_electric_car = ElectricCar('Tesla', 'Model S', 2020, 100)

print(my_electric_car.get_description()) # 输出:Tesla Model S (2020) with a 100-kWh battery

在这个示例中,我们重写了ElectricCar类的get_description方法,增加了描述电池容量的信息。我们使用同样的方式调用get_description方法,不同的是输出的描述信息根据不同的对象产生了相应的变化。

3. 小结

面向对象编程是计算机编程中的重要思想,其将现实世界的概念和计算机编程有机结合起来,提供了更好的代码复用性和可维护性。在Python中,我们可以使用class关键字来定义一个新的类,使用__init__方法来初始化对象,使用方法来定义对象的行为。

在Python中,面向对象编程还包括类的继承和多态性。我们可以通过子类继承父类的属性和方法,轻松地实现类的扩展和复用。同时不同的对象可以对同一个方法做出不同的响应,从而进一步定义了对象之间的关系。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签