Python自学--基础知识点汇总(2)

这是第二节基础知识课,第一节见:

Python自学–基础知识点汇总(1)

第一个问题,什么是 Python ?根据 Python 之父 Guido van Rossum 的话,Python 是:

一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。
对于我来说,学习 Python 的首要原因是,Python 是一种可以优雅编程的语言。它能够简单自然地写出代码和实现我的想法。
另一个原因是我们可以将 Python 用在很多地方:数据科学、Web 开发和机器学习等都可以使用 Python 来开发。Quora、Pinterest 和 Spotify 都使用 Python 来进行他们的后端 Web 开发。那么让我们来学习一下 Python 吧。

类&对象

一些理论:

对象是对现实世界实体的表示,如汽车、狗或自行车。这些对象有两个共同的主要特征:数据和行为。
汽车有数据,如车轮的数量,车门的数量和座位的空间,并且它们可以表现出其行为:它们可以加速,停止,显示剩余多少燃料,以及许多其他的事情。

我们将数据看作是面向对象编程中的属性和行为。又表示为:
数据→ 属性和行为 → 方法

而类是创建单个对象的蓝图。在现实世界中,我们经常发现许多相同类型的对象。比如说汽车。所有的汽车都有相同的构造和模型(都有一个引擎,轮子,门等)。每辆车都是由同一套蓝图构造成的,并具有相同的组件。

Python 面向对象编程模式:ON

Python,作为一种面向对象编程语言,存在这样的概念:类和对象。

一个类是一个蓝图,是对象的模型。

那么,一个类是一个模型,或者是一种定义属性和行为的方法(正如我们在理论部分讨论的那样)。举例来说,一个车辆类有它自己的属性来定义这个对象是个什么样的车辆。一辆车的属性有轮子数量,能源类型,座位容量和最大时速这些。

考虑到这一点,让我们来看看 Python 的类的语法:

class Vehicle:
    pass

上边的代码,我们使用 class 语句来定义一个类。是不是很容易?

对象是一个类的实例化,我们可以通过类名来进行实例化。

car = Vehicle()
print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>

在这里,car 是类 Vehicle 的对象(或者实例化)。

记得车辆类有四个属性:轮子的数量,油箱类型,座位容量和最大时速。当我们新建一个车辆对象时要设置所有的属性。所以在这里,我们定义一个类在它初始化的时候接受参数:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

这个 init 方法。我们称之为构造函数。因此当我们在创建一个车辆对象时,可以定义这些属性。想象一下,我们喜欢 Tesla Model S ,所以我们想创建一个这种类型的对象。它有四个轮子,使用电能源,五座并且最大时时速是250千米(155英里)。我们开始创建这样一个对象:

tesla_model_s = Vehicle(4, 'electric', 5, 250)

四轮+电能源+五座+最大时速250千米。

所有的属性已经设置了。但我们该如何访问这些属性值呢?我们给对象发送消息以向其请求该值。我们称之为方法。它是对象的行为。让我们实现它:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity    def number_of_wheels(self):
        return self.number_of_wheels    def set_number_of_wheels(self, number):
        self.number_of_wheels = number

这是两个方法number_of_wheels和set_number_of_wheels的实现。我们将其称为getter & setter。因为第一个函数是获取属性值,第二个函数是给属性设置新的值。

在 Python 中,我们可以使用@property (修饰符)来定义getters和setters。让我们看看实际代码:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity    @property
    def number_of_wheels(self):
        return self.number_of_wheels    @number_of_wheels.setter
    def number_of_wheels(self, number):
        self.number_of_wheels = number

并且我们可以将这些方法作为属性使用:

tesla_model_s = Vehicle(4, 'electric', 5, 250)
print(tesla_model_s.number_of_wheels) # 4tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2print(tesla_model_s.number_of_wheels) # 2

这和方法定义有轻微的不同。这里的方法是按照属性执行的。例如当我们设置新的轮胎数目时,我们并不将这两个看做参数,而是将数值2设置给number_of_wheels。这是编写python风格的getter和setter代码的一种方式。

但我们也可以将该方法用于其他事项,例如“make_noise”方法。让我们看看:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity    def make_noise(self):
        print('VRUUUUUUUM')

当我们调用此方法时,它仅仅返回一个字符串“VRRRRUUUUM.”

tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM
发布了38 篇原创文章 · 获赞 1 · 访问量 2210

猜你喜欢

转载自blog.csdn.net/wulishinian/article/details/102757040