Python全栈之面向对象基础
什么是面向对象编程?
面向对象编程(Object-oriented programming,简称OOP)是一种程序设计思想。面向对象的程序设计语言支持类和对象的概念,这种编程思想基于类与对象的概念和类与对象之间的关系。用OOP的方法组织代码,可以将程序设计进行更高层次的抽象,达到更好的代码重用,以及更好的可读性,可维护性。
面向对象编程的特点
- 封装:将数据和方法封装在一起以保证数据的安全性和方法的独立性
- 继承:子类继承父类,并且子类可以新增或者覆盖原有父类的方法和属性,提高复用性
- 多态:同一种行为表现出不同的结果。
如何定义类与对象
定义一个类的语法如下:
class MyClass:
pass # pass代表空语句
一旦定义了类,我们就可以创建类的对象(又叫实例)。Python使用构造函数 __init__
来设置一个类的属性(数据成员)
class MyClass:
def __init__(self, name):
self.name = name
john = MyClass('John')
print(john.name) # 输出 "John"
在上面的例子中,类 MyClass
有一个属性 name
,构造函数 __init__
使用 self.name
来初始化这个属性,表示这是实例 john
的一个数据成员。最后使用 print(john.name)
来输出属性值。
继承
类可以被其他类继承,继承的类被称为子类,新建的类称为父类。子类继承了父类的属性和方法,在此基础之上可以新增或者覆盖原有父类的方法和属性。
class Parent:
def __init__(self, name):
self.name = name
def say_hello(self):
print('Hello,', self.name)
class Child(Parent):
def say_hello(self):
print('Hi,', self.name)
janet = Child('Janet')
janet.say_hello() # 输出 "Hi, Janet"
在上面的例子中,class Child(Parent)
表示 Child
类继承了 Parent
类的所有属性和方法,并且在其基础之上新增了 say_hello
方法。当我们调用子类的 say_hello
方法时,程序会优先调用子类的方法,如果没有找到,则回溯到父类查找其方法。
多态
多态是指同一种行为表现出不同的结果。在Python中有很多方式达成多态。下面通过多态性实现两个著名的算数运算。
class Addition:
def __init__(self, a, b):
self.a = a
self.b = b
def operation(self):
return self.a + self.b
class Multiplication:
def __init__(self, a, b):
self.a = a
self.b = b
def operation(self):
return self.a * self.b
def calculate(obj):
return obj.operation()
add = Addition(10, 20)
multiply = Multiplication(10, 20)
print(calculate(add)) # Prints: 30
print(calculate(multiply)) # Prints: 200
在上面的例子中,我们定义了两个对象 add
和 multiply
分别属于两个类 Addition
和 Multiplication
。类 Addition
和 Multiplication
都有一个共同的函数 operation
,我们使用这个函数来展示多态性,这两个对象调用 calculate()
函数,以便能够让操作进行混合及匹配。最后输出的结果分别为他们对应的运算结果。
以上就是本文对于Python全栈之面向对象编程基础的攻略介绍,希望能够帮助大家更好地理解面向对象编程思想。