Python中的面向对象编程学习笔记
文章目录
面向对象编程主要有以下几个方面:类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。
1.类:
1.什么是类:
类(Class)可以看作是创建对象的模板或蓝图。它定义了一组规则和结构,这些规则和结构用于描述如何创建特定类型的对象。可以理解为,类就像是一份建筑图纸,描述了一种特定类型的结构和行为,而基于这份图纸我们可以创建出许多具体的建筑(也就是对象)。
2.类的组成:
**1.属性(Attributes):**也称为字段,是定义在类中的变量。它们表示对象的状态或者特征。例如,如果我们定义一个“汽车”类,那么“颜色”、“品牌”、“型号”等可能就是这个类的属性。
**2.方法(Methods):**是定义在类中的函数,表示对象可以进行的操作或行为。还是“汽车”类的例子,可能的方法有“启动”、“停车”、“加速”等。
一个特点是,类定义了属性和方法,但具体的值是存储在由该类创建的对象(或称为该类的实例)中的。
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand
def start(self):
print("The car is starting.")
def stop(self):
print("The car is stopping.")
# 在这个例子中,Car 类有两个属性 color 和 brand,以及两个方法 start 和 stop。我们可以基于这个类创建出各种颜色和品牌的汽车对象,并分别对它们进行启动和停车等操作。
3.self
和__init__
:
self
:self
是一个约定俗成的命名,用来指代实例对象本身。在类的方法中,你会看到 self
被作为第一个参数。这是因为当你通过一个实例对象来调用类的方法时,Python会自动将这个实例对象作为第一个参数传入,这个特性也称为绑定行为。因此,无论你给这个参数取什么名字,它都指的是实例对象本身,但是约定俗成的是取名为 self
。
class MyClass:
def print_self(self):
print(self)
# 调用print_self方法时,Python将my_object对象作为参数传递给self,所以print(self)输出的就是my_object对象。
my_object = MyClass()
my_object.print_self() # 输出: <__main__.MyClass object at 0x10d238d90>
print(my_object) # 输出: <__main__.MyClass object at 0x10d238d90>
__init__
:__init__
是特殊的一种方法,被称为类的构造方法或初始化方法。当我们创建了类的一个新实例(也就是一种对象)时,__init__
方法会自动被调用。它的主要作用是进行一些设置或初始化工作,例如我们可以在这个方法中为对象设置一些属性值。
下面是一个简单的例子:
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand
在这个例子中,__init__
方法接受两个参数 color
和 brand
,然后将它们保存为对象的属性。当我们创建一个新的 Car
对象时,就需要提供这两个参数,例如 my_car = Car('red', 'Toyota')
。然后,我们就可以通过 my_car.color
和 my_car.brand
访问这些属性了。
2.对象:
1.什么是对象:
在面向对象编程中,对象(Object)是实际存在的一个独立实体,在Python中,它是使用类的定义作为模版创建出来的。以类作为蓝图创建的每个对象都将具有类定义的相同结构(即它们都具有相同的属性和方法),但是它们的属性值可能会各不相同。
例如,如果我们有一个“汽车”类,这个类可能定义了“颜色”、“品牌”等属性,以及“启动”、“停车”等方法。然后,我们可以基于这个类创建出一个颜色是红色、品牌是丰田的汽车对象;也可以创建出一个颜色是蓝色、品牌是本田的汽车对象。这两个对象都是“汽车”类的实例,但它们有各自的属性值,并能独立地进行启动和停车等操作。
2.如何创建对象:
创建对象的这个过程也被称为实例化,因为你正在创建类的一个实例。创建对象非常简单,只需要使用类名并传入适当的参数(如果有的话)即可。
以下是代码示例:
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand
def start(self):
print(f"The {
self.color} {
self.brand} is starting!")
def stop(self):
print(f"The {
self.color} {
self.brand} is stopping!")
要实例化 Car
类并创建一个对象,你可以这样做:
my_car = Car("black", "BMW")
在上述代码中,我们调用了 Car
类,并传入了两个字符串参数 "black"
和 "BMW"
。这些参数会被传递给 Car
类的 __init__
方法,并设置为对象的属性值。
现在,my_car
是 Car
类的一个实例,我们可以调用它的方法:
my_car.start() # The black BMW is starting!
即使 start
方法使用 self
作为参数,也不需要在调用时显式传入这个参数。Python会自动将 my_car
作为 self
参数传入。
3,实例属性和实例方法:
实例属性:是在类的实例(对象)中定义的属性。每个实例都有其自己的实例属性。即使两个实例对象都来自同一个类,它们的实例属性也可以是完全不同的。
例如:
class Car:
def __init__(self, color):
self.color = color # color 就是一个实例属性
car1 = Car("red")
car2 = Car("blue")
print(car1.color) # 输出 "red"
print(car2.color) # 输出 "blue"
在上面的例子中, color
就是 Car
类的一个实例属性