类型与对象
一点基础理论:
对象代表现实世界中的事物,例如汽车、狗和自行车。对象有两个主要特征,数据和行为。
在面向对象编程中,我们将数据视为属性,将行为视为方法。这是:
数据 → 属性 和 行为 → 方法
类型是创建单个对象实例的蓝图。在现实世界中,我们经常会发现很多对象实例具有相同的类型,比如汽车。它们都具有相同的结构和型号(带有电机、轮子、门等)。每辆汽车都是根据相同的蓝图制造的,并具有相同的组件。
Python,作为一门面向对象编程的语言,具有类和对象的概念。
类是蓝图,对象是模型。
同样,一个类,它只是一个模型,或者是一种定义属性和行为的方法(正如我们在理论部分讨论的那样)。例如,Vehicle 类有自己的属性来定义车辆是什么。车轮数量、能源类型、座位容量和速度都是车辆的属性。
考虑到这一点,让我们看看类的 Python 语法:
class Vehicle:
pass
我们用类声明定义一个类 ,就是这样。很简单,不是吗?
对象是类的实例,我们使用命名类来创建实例。
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
我们使用“初始化”方法。我们称之为构造函数。所以这些属性可以在创建“车辆”对象时定义。假设我们喜欢 Tesla Model S,我们想要创建这种对象。它有 4 个轮子,靠电力运行,有 5 个座位,速度为 250 公里/小时(155 英里/小时)
tesla_model_s = Vehicle(4, 'electric', 5, 250)
4 个 “轮子”+ 电能 “能源”+5 个 “座位”+250km/h “速度”。
所有属性都已设置。但是我们如何获得这些属性值呢?我们向对象发送消息以询问他们。我们称之为方法。方法是对象的行为。让我们来实现它:
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。我们称它们为 Get & Set。因为第一个获取属性值,第二个设置新的属性值。
Python 中,我们可以用 “@property” (“decorator”) 去定义 "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) # 4
tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2
print(tesla_model_s.number_of_wheels) # 2
这与定义方法略有不同。这些方法与属性的工作方式不同。比如我们设置轮子的个数,需要给一个变量赋值2,就把“number_of_wheels”的值设置为2即可。这是一种写“pythonic”、“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')
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python3.6的pip在哪里12/15
- ♥ 如何在python中将华氏温度转换为摄氏温度?08/23
- ♥ 如何在 Python 中从 numpy 数组中添加和删除元素08/11
- ♥ 如何在python中检查字符串是否有空格08/20
- ♥ windows下如何安装python10/25
- ♥ 什么是java和python09/14
内容反馈