Python 面向对象
Python 是一门面向对象、解释型的高级编程语言。类似于 Java,Python 中创建类和实例化对象是简单的,本文将会详细讲解 Python 面向对象的知识。
类是定义具有相同属性和方法的对象的集合,对象是类数据结构的实例化,对象包括两个数据成员(类变量和实例变量)和方法。
1 面向对向技术的简述
本节将从类数据结构和其它技术两个方面简要介绍 Python 面向对象技术的定义。
- 类的数据结构
- 类变量,定义在函数外部类内部的公有变量,通常不做实例化变量使用,被所有实例化对象共用。
- 实例变量,是声明在类中的属性,称作实例化变量,用 self 修饰的变量。
- 局部变量,定义在函数内部的变量。
- 方法,类中定义的函数,与一般函数不同,函数必须含有参数且第一个参数必须为指向类对象的引用,通常用 self 表示。
- 数据成员,分别是类变量和实例变量,它们用于处理类和实例对象的数据。
- 继承,派生类(derived class)继承基类(base class)的属性和方法。可以把派生类的实例化对象当作基类的实例化对象对待。派生类可以继承多个基类。
- 方法重写,当从基类继承的方法不能满足派生类的需求时,就需要对方法进行重写,也可以叫做方法的覆盖。
- 实例化,将类的数据结构实例化成一个具体的对象。
2 面向对象的快速入门
本节将要从语法格式配合案例的方式介绍 Python 面向对象技术的使用方法。
2.1 类的定义
本节将要介绍类定义的方法,格式。具体内容如下所示。
类的定义格式
python
class ClassName:
# 定义属性
# 定义构造方法
# 定义方法
案例
python
calss People:
# 定义实例化公有变量姓名,性别,年龄
name = ''
gender = 'male'
age = 0
# 定义实例化私有变量体重
__weight=0
# 定义构造函数
def __init__(self,n,g,a,w):
self.name=n
self.age=a
self.gender=g
self.__weight=w
# 定义一般函数
def greet(self):
print("hello,oop! My name is %s and I am %d years old."%(self.name,self.age))
知识点
self 表示指向类实例的引用,表示当前实例对象的内存地址。当执行实例化对象操作时,会自动调用构造方法,初始化参数。
在类中定义方法时,第一个参数必须存在且为指向实例化对象的引用,通常用 self 表示,它可以用来访问和操作类中定义属性。
私有变量,在变量前添加两个下划线表示私有变量,私有变量只能在类中使用,不能够被外部访问。私有函数同理。
2.2 实例化对象及使用
本节主要讲解实例化类的方法,及实例化类后如何使用对象。
语法格式与使用方式
python
# 类采用 2.1 节定义的 People 类
# 实例化类
p = People("oop","male",30,100)
# 属性的使用 对象名.属性名
print(p.name)
# 类方法的使用 对象名.方法名
p.greet()
2.3 继承与方法重写
本节主要讲解 Python面向对象的继承与方法重写。
-
继承
类继承的语法格式
pythonclass DerivedClass(BaseClass1,BaseClass2,...): # 类的数据结构Python 中类的继承可以实现多继承,注意,若父类中有同名方法,而子类使用时未指定,就从圆括号父类中从左至右的搜索该方法。
-
方法重写
-
Python 中的方法重写没有什么特别的,若父类中声明实现了方法,就在子类中重写声明并重写该方法。
-
若子类中重写了某种方法,但想使用父类中未重写时的方法,可以使用内置函数 super()。例如:
python# 假设派生类为 DerivedClass,基类为 BaseClass。当中有方法 overfunc() d = DerivedClass() # 调用父类 overfunc() super(DerivedClass,d).overfunc() -
构造方法的重写,若子类未重写构造方法,实例化子类时自动调用父类构造方法,若子类重写构造方法,又要继承父类构造方法,则可以使用关键字 super,具体语法格式如下所示。
pythonsuper(子类,self).__init__(参数1,参数2,...)或使用如下方法继承父类构造方法。
python父类名称.__init__(self,参数1,参数2,...)
-
至此,Python 面向对象就分享到这里。