python3是一种面向对象的语言。
一面向对象技术简介
1、类:类用来描述具有相同的属性和方法的集合,它定义了每个对象所共有的属性和方法。对象是类的实例。
2、方法:类中定义的函数。
3、类变量:类变量在整个函数体中是共用的。它定义在类中且在函数体之外。
4、数据成员:类变量或者实例变量用来处理类及其实例对象的相关数据。
5、方法重写:如果从父类继承的方法不能满足子类的需求,可以对其改写,这个过程叫方法的覆盖,也称重写。
6、局部变量:定义在方法中的变量,只作用于当前类的实例。
7、实例变量:在类的声明中,属性是用变量来表示的。实例变量是在类声明的内部,类的其他成员方法之外声明的。
8、继承:把一个派生类继承基类的字段和方法,继承也允许把一个派生类对象作为一个基类对象来对待。有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)
9、对象:通过一个类定义的一个数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法。
和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。
Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。
对象可以包含任意数量和类型的数据。
二类定义
class className:
<statement 1>
<statement n>
类实例化后,可以访问其属性,通过类名访问其属性。
三类对象
类对象支持两种操作:属性引用和实例化。
属性引用和python中所有的属性引用一样的语法:obj.name
类有一个名为__init__()的特殊方法(构造方法),该方法在类实例化时会自动调用。
def init(self):
self.data = []
self代表类的实例,
类的方法和普通的函数只有一个区别,他们必须有一个额外的第一个参数名称。按照惯例,它的名称是self.
四类的方法
在类的内部使用def关键字来定义一个类的方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是类的实例。
#类定义
class people:
#定义基本属性
name = ‘’
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def init(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age)
# 实例化类
p = people(‘runoob’,10,30)
p.speak()
执行以上程序输出结果为:
runoob 说: 我 10 岁。
继承:
class DerivedclassName(BaseclassName):
<statement 1>
注意:若是圆括号中相同的方法名,python使用时未指定,则会从左往右搜索,即方法在子类中未找到时,则会从左往右从父类中查找此方法。
#类定义
class people:
#定义基本属性
name = ‘’
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def init(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
grade = ‘’
def init(self,n,a,w,g):
#调用父类的构函
people.init(self,n,a,w)
self.grade = g
#覆写父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
#另一个类,多重继承之前的准备
class speaker():
topic = ‘’
name = ‘’
def init(self,n,t):
self.name = n
self.topic = t
def speak(self):
print(“我叫 %s,我是一个演说家,我演讲的主题是 %s”%(self.name,self.topic))
#多重继承
class sample(speaker,student):
a =’’
def init(self,n,a,w,g,t):
student.init(self,n,a,w,g)
speaker.init(self,n,t)
test = sample(“Tim”,25,80,4,“Python”)
test.speak() #方法名同,默认调用的是在括号中排前地父类的方法
执行以上程序输出结果为:
我叫 Tim,我是一个演说家,我演讲的主题是 Python
类的专有方法:
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方