详解Python: 面向对象编程攻略
什么是面向对象编程(Object-Oriented Programming, OOP)
面向对象编程是一种编程思想,它将软件系统中的对象抽象为类,一个类包含了数据和操作这些数据的方法。使用面向对象编程可以使得代码更加模块化、可复用、易于维护和扩展。
面向对象编程的核心概念包括类、对象、继承、多态等。
Python中的面向对象编程
Python是一种简单易学的高级编程语言,支持面向对象编程。Python中的类和对象与其他面向对象编程语言中的类和对象基本相同,但是Python中的一些特性使得面向对象编程更加容易。
定义一个类
在Python中,使用class
关键字来定义一个类,类名通常采用大写字母命名。
class MyClass:
pass
上面的代码中,我们定义了一个空类MyClass
。在Python中,pass
关键字用于表示一个空语句块,它可以被当作一个占位符来使用。在实际的类定义中,我们通常需要在类中定义一些属性和方法。
定义类的属性和方法
在Python中,类的属性可以是数据属性或者方法属性。数据属性用于存储数据,方法属性用于操作这些数据。
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def say_name(self):
print('My name is %s' % self.name)
def say_age(self):
print('I am %d years old' % self.age)
上面的代码中,我们定义了一个名为MyClass
的类,它有两个数据属性name
和age
以及两个方法属性say_name
和say_age
。其中,__init__
方法是一个特殊的方法,它会在创建对象时被调用,用于对对象的属性进行初始化。
创建对象
在Python中,通过调用类来创建对象。创建对象时会自动调用__init__
方法对对象的属性进行初始化。
obj1 = MyClass('Tom', 20)
obj2 = MyClass('Jerry', 18)
obj1.say_name() # 输出:My name is Tom
obj2.say_age() # 输出:I am 18 years old
上面的代码中,我们创建了两个对象obj1
和obj2
,它们的属性分别被初始化为name='Tom', age=20
和name='Jerry', age=18
。然后分别调用了它们的两个方法属性say_name
和say_age
。
继承
Python中支持继承,可以通过继承来实现代码的重用。
class Car:
def __init__(self, brand):
self.brand = brand
def run(self):
print('Car is running')
class Audi(Car):
def run(self):
print('Audi is running')
class BMW(Car):
def run(self):
print('BMW is running')
上面的例子中,我们定义了一个父类Car
和两个子类Audi
和BMW
。子类继承了父类的属性和方法,子类也可以重写父类的方法来实现自己的特殊行为。
car1 = Car('Toyota')
car2 = Audi('Audi A4')
car3 = BMW('BMW X5')
car1.run() # 输出:Car is running
car2.run() # 输出:Audi is running
car3.run() # 输出:BMW is running
上面的代码中,我们创建了三个对象car1
、car2
和car3
,分别属于不同的类。然后调用了它们的run
方法,输出了不同的结果。
多态
Python支持多态,它允许我们在一个类中调用其他类的方法。在上面的继承例子中,我们可以在Car
类中调用Audi
和BMW
类的run
方法。
class Car:
def __init__(self, brand):
self.brand = brand
def run(self):
print('Car is running')
def run_audi(self, audi):
audi.run()
def run_bmw(self, bmw):
bmw.run()
car1 = Car('Toyota')
car2 = Audi('Audi A4')
car3 = BMW('BMW X5')
car1.run_audi(car2) # 输出:Audi is running
car1.run_bmw(car3) # 输出:BMW is running
上面的代码中,我们在Car
类中定义了两个方法run_audi
和run_bmw
,它们接受一个Audi
和BMW
对象作为参数,并调用它们的run
方法。然后我们创建了三个对象car1
、car2
和car3
,并分别调用了car1.run_audi()
和car1.run_bmw()
方法。
示例说明
示例1: 定义一个学生类
class Student:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
self.score = 0
def set_score(self, score):
self.score = score
def get_score(self):
return self.score
def show_info(self):
print('Name: %s\nAge: %d\nGender: %s\nScore: %d' % (self.name, self.age, self.gender, self.score))
上面的代码中,我们定义了一个学生类Student
,它有四个属性name
、age
、gender
和score
,以及三个方法set_score
、get_score
和show_info
。其中,set_score
方法用于设置学生的分数,get_score
方法用于获取学生的分数,show_info
方法用于展示学生的信息。这个类可以用于实现一个简单的学生管理系统。
示例2: 定义一个名为“ToDo”的任务类
class ToDo:
def __init__(self, content, priority, finished=False):
self.content = content
self.priority = priority
self.finished = finished
def finish(self):
self.finished = True
上面的代码中,我们定义了一个名为ToDo
的任务类,它有三个属性content
、priority
和finished
,以及一个方法finish
。其中,content
属性存储任务的内容,priority
属性存储任务的优先级(比如重要、一般、不重要等),finished
属性表示任务是否已完成。finish
方法用于标记任务为已完成状态。
这个类可以用于实现一个简单的ToDo List管理系统。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python:面向对象编程 - Python技术站