在第一部分中,我们学习了 Python 的基本语法、数据类型、控制流语句以及函数。在第二部分中,我们将更深入地学习 Python 的高级特性,例如面向对象编程、异常处理、文件处理和模块化编程。
当我们需要处理某些具有相同属性和方法的对象时,类和对象就成为了一个重要的解决方案。类是一种用户自定义的数据类型,它包含了一些方法和属性的定义,用来描述对象的特征和行为。而对象则是类的实例化,它是由类创建的具有特定属性和方法的实体。
在 Python 中,可以使用 class 关键字来定义一个类,如下所示:
class Person:
# 类属性
species = 'human'
# 构造函数
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
# 实例方法
def say_hello(self):
print(f'Hello, my name is {self.name}, and I am {self.age} years old.')
在这个代码中,我们定义了一个名为 Person 的类,它包含一个类属性 species ,一个构造函数 init 和两个方法 say_hello 和 set_species 。构造函数 init 用于创建实例对象,并初始化实例属性。实例方法 say_hello 用于打印一条问候语,并使用到实例属性 self.name 和 self.age 。
在 Python 中,可以使用类来创建对象。在创建对象时,会自动调用类的构造函数,如下所示:
p1 = Person('Alice', 25)
p2 = Person('Bob', 30)
p1.say_hello() # 输出Hello, my name is Alice, and I am 25 years old.
p2.say_hello() # 输出Hello, my name is Bob, and I am 30 years old.
在上面的代码中,我们分别使用类 Person 了两个对象 p1 和 p2 ,并分别调用了它们的实例方法 say_hello 。
在 Python 中,对象的属性可以通过点运算符来访问,如下所示:
print(p1.name) # 输出Alice
print(p2.age) # 输出30
在上面的代码中,我们分别访问了对象 p1 和 p2 的属性 name 和 age ,并将它们打印出来。
在 Python 中,类可以继承其他类的属性和方法。被继承的类被称为父类或基类,继承它的类被称为子类或派生类。子类可以覆盖父类的方法,并添加自己的属性和方法。
例如,下面的代码定义了一个子类 Student ,它继承了父类 Person 的属性和方法,并添加了自己的属性和方法:
class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def say_hello(self):
print(f"Hello, my name is {self.name}, and I am {self.age} years old. My major is {self.major}.")
s1 = Student('Charlie', 20, 'Computer Science')
s2 = Student('David', 22, 'Mathematics')
s1.say_hello() # 输出Hello, my name is Charlie, and I am 20 years old. My major is Computer Science.
print(s2.species) # 输出human
print(s2.major) # 输出Mathematics
在这个例子中,我们定义了一个子类 Student ,它继承了 Person 类。子类 Student 有一个新的属性 major ,表示学生的专业。在子类中,我们重写了父类的实例方法 say_hello ,添加了一个新的输出信息 —— 学生的专业。在子类 Student 的构造函数中,我们调用了父类 Person 的构造函数,以初始化父类的属性 name 和 age 。这是通过调用 super().init(name, age) 来实现的。
在定义好 Student 类后,我们使用它创建了两个 Student 对象 s1 和 s2 ,并使用它们的实例方法 say_hello 来打印输出。我们还访问了对象s2的属性 species 和 major ,其中属性 species 是从父类 Person 继承而来的。
以上就是 Python 中类和对象的基本用法,它们是面向对象编程的基石,可以使我们更方便地组织和管理代码,提高代码的可维护性和重用性。在下一节中,我们将介绍 Python ....