学习Python类型和对象,看这篇文章足矣!
类型与对象
一点基础理论:
对象代表现实世界中的汽车、狗和自行车。对象有两个主要特征:数据和行为。
在面向对象的编程中,我们将数据视为属性,行为视为方法。即:
数据 → 属性 和 行为 → 方法
类型是创建单个对象实例的蓝图。在现实世界中,我们经常发现许多对象实例都有相同的类型,比如汽车。它们都有相同的结构和模型(发动机、轮子、门等)。每辆车都是根据相同的设计图纸制作的,并且有相同的组成部分。
Python,作为一种面向对象编程的语言,它具有类和对象的概念。
类是蓝图,对象是模型。
同样,一个类,它只是一个模型,或一种定义属性和行为的方法(正如我们在理论部分讨论的)。例如,车辆类别有自己的属性,并定义什么是车辆。车轮的数量、能源类型、座椅容量和速度都是车辆的属性。
考虑到这一点,让我们来看看类别 Python 语法:
classVehicle: pass
我们用类声明来定义类 ,仅此而已。很简单,不是吗?
对象是一个类的例子,我们用命名类来创建一个例子。
car=Vehicle() print(car)#<__main__.vehicleinstanceat0x7fb1de6c268>
这里 ‘car’ 是 ‘Vehicle’ 类的一个对象(或实例)。
记住,我们的 ‘Vehicle’ 轮子数量、能量类型、座位容量和速度有四个属性。我们创建了一个。 ‘Vehicle’ 将所有属性设置为对象 。因此,当我们定义我们的类初始化时,我们需要接收数据:
classVehicle: 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方法。我们称之为结构方法。所以创建 ‘vehicle’ 这些属性可以在对象中定义。假设我们喜欢 Tesla Model S,我们必须创建这样的对象。它有 4 使用电能的车轮 5 每个座位,时速 250km/h (155mph)
tesla_model_s=Vehicle(4,'electric',5,250)
4 个 “轮子”+ 电能 “能源”+5 个 “座位”+250公里/h “速度”。
所有属性都设置好了。但是我们如何获得这些属性值呢?我们给对象发短信问他们。 我们称之为方法。方法是对象的行为。让我们实现它:
classVehicle: 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 defnumber_of_wheels(self): returnself.number_of_wheels defset_number_of_wheels(self,number): self.number_of_wheels=number
这里创建了两种方法:number_of_wheels和set_number_of_wheels. 我们称之为获取&设置. 由于第一个获得了属性值,然后第二个设置了一个新的属性值。
Python 中,我们可以用 “@property” (“decorator”) 去定义 "getters" 和 “setters"。请参见以下代码:
classVehicle: 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 defnumber_of_wheels(self): returnself.number_of_wheels @number_of_wheels.setter defnumber_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#settingnumberofelsto2 print(tesla_model_s.number_of_wheels)#2
这有点不同于定义方法。这些方法的工作机制和属性不同。例如,当我们设置轮子的数量时,我们需要把它们放在一边 2 给一个变量赋值只需设置 “number_of_wheels” 的值为 2.这是一种写作 “pythonic”、 ”getter“、“setter” 代码方法。
我们也可以使用其他方法,比如 “make_noise” 方法。请参见下面的例子。
classVehicle: 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 defmake_noise(self): print('VRUUUUUUUM')