目录
1. 面向对象概述
2. 类的定义和使用
2.1 定义类
2.2 创建类的实例
2.3 __init__()
2.4 创建类的成员
2.4.1 创建实例方法并访问
2.4.2 创建数据成员并访问
3. 继承
3.1 继承语法
3.2 方法重写
1. 面向对象概述
Python从设计之初就已经是一种面向对象的语言。面向对象(object oriented,OO)是一种设计思想,面向对象中的对象,通常是指客观世界中存在的的对象。对象是一种抽象概念,表示任意存在的事物。通常将对象划分为两部分,即静态部分与动态部分。静态部分被称为“属性”,如人的性别;动态部分指的是对象的行为,即对象执行的动作,如人可以行走。
类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。例如,把雁群比作大雁类,那么大雁类就具备了翅膀和爪子等属性,觅食和睡觉等行为,而一只雁群中的大雁则就是大雁类中的一个对象。
面向对象程序设计具有3个主要基本特征,即封装、继承和多态。
封装就是类;继承,子类继承父类,实现重复利用;多态,将父类对象应用于子类的特征就是多态,即子类继承父类时又具备各自的特性。
2. 类的定义和使用
2.1 定义类
语法格式如下:
class ClassName:
'''类的描述'''
statement
#ClassName:指定类名,一般使用大写字母开头。
#类的描述:指定类的文档字符串。
#statement:类体,主要类变量(或类成员)、方法和属性等定义语句组成。或者pass代替。
例如:
在定义类时还没想好具体功能时。
class Geese:
'''大雁类'''
pass
2.2 创建类的实例
创建类的语法格式如下:
ClassName(parameterlist) #ClassName:必选参数,指定具体的类。 #parameterlist:可选参数,当创建一个类时,没有创建__init__()方法, 或者__init__()方法只有一个self参数时,parameterlist可以省略。
例如:
创建定义的Geese类的一个实例:
class Geese:
'''大雁类'''
pass
wildGoose = Geese()
print(wildGoose)
运行结果如下:
<__main__.Geese object at 0x00000241EA5E9C30>
2.3 __init__()
说明:在创建类后,通常会创建一个__init__()方法,该方法是一个特殊的方法。每当创建一个类的新实例时,python都会自动执行它。__init__()方法中必须包含一个self参数,并且必须是第一个参数。self参数是一个指向实例本身的引用,用于访问类中的属性和方法。在方法被调用时会自动传递实际参数self。因此,在__init__()方法中只有一个参数的情况下,当创建类的实例时,就无须指定实际参数。
创建Geese类,构造__init__()方法,并创建大雁类的一个实例:
class Geese:
'''大雁类'''
def __init__(self): #self是第一个参数
print('我是大雁类')
wildGoose = Geese()
运行结果如下:
我是大雁类
在__init__()方法中,除self参数外,还可以自定义一些参数,参数间使用逗号,隔开。
例如:
class Geese:
'''大雁类'''
def __init__(self,a,b):
print('我是大雁类')
print(a)
print(b)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
wildGoose = Geese(a,b)
运行结果如下:
我是大雁类 我是大雁类中的属性a 我是大雁类中的属性b
2.4 创建类的成员
2.4.1 创建实例方法并访问
实例方法是在指在类中定义的函数,该函数是一种在类的实例上操作的函数。
例如:
class Geese:
'''大雁类'''
def __init__(self,a,b):
print('我是大雁类')
print(a)
print(b)
def fly(self,state): #创建实例方法,定义飞行方法
print(c)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
c = '人字飞行'
wildGoose = Geese(a,b) #创建实例
wildGoose.fly(c) #访问实例方法
运行结果如下:
我是大雁类 我是大雁类中的属性a 我是大雁类中的属性b 人字飞行
2.4.2 创建数据成员并访问
数据成员是指在类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性。
类属性
类属性是指定义在类中,并且在函数体外的属性。可以通过类名称或者实例名称被访问。
例如:
还是定义一个Geese类,在该类中定义2个属性,用于记录雁类的特征。
lass Geese:
'''雁类'''
d = '脖子长' #定义在类中,并且在函数体外。
e = '振翅快'
def __init__(self,a,b):
print('我是大雁类')
print(a)
print(b)
print(Geese.d)
print(Geese.e)
def fly(self, state): # 创建实例方法,定义飞行方法
print(c)
a = '我是大雁类中的属性a'
b = '我是大雁类中的属性b'
c = '人字飞行'
wildGoose = Geese(a,b) #创建实例
wildGoose.fly(c) #访问实例方法
运行结果如下:
我是大雁类 我是大雁类中的属性a 我是大雁类中的属性b 脖子长 振翅快 人字飞行
实例属性
实例属性是指定义在类的方法中的属性,只作用于当前实例中。
例如:
class Geese:
'''雁类'''
def __init__(self):
self.d = '脖子长'
self.e = '振翅快'
print('我是大雁类')
print(self.d)
print(self.e)
wildGoose = Geese() # 创建类的实例
运行结果如下:
我是大雁类 脖子长 振翅快
3. 继承
3.1 继承语法
通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在python中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,以实现类的继承。
语法格式如下:
class ClassName(baseclasslist):
'''类的描述'''
statement
#ClassName:指定类名,一般使用大写字母开头。
#baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号,分割。
#类的描述:指定类的文档字符串。
#statement:类体,主要类变量(或类成员)、方法和属性等定义语句组成。或者pass代替。
例如:
创建水果类(基类)及派生类
class Fruit: #定义水果类
color ='绿色' #定义类属性
def harvest(self,color):
print('水果是:', color)
print('水果成熟')
print('水果未成熟时是:',Fruit.color )
class Apple(Fruit): #定义苹果类
color = '红色'
def __init__(self):
print('苹果')
class Orange(Fruit): #定义橙子类
color = '橙色'
def __init__(self):
print('橙子')
apple = Apple() #创建类的实例
apple.harvest(apple.color) #调用基类的harvest()方法
orange = Orange()
orange.harvest(orange.color)
运行结果如下:
苹果 水果是: 红色 水果成熟 水果未成熟时是: 绿色 橙子 水果是: 橙色 水果成熟 水果未成熟时是: 绿色
3.2 方法重写
当基类中的某些方法不完全适用于派生类时,需要在派生类中重写基类的这个方法。
例如:
在创建派生类Apple和Orange时,重写harvest()方法。
class Fruit: #定义水果类
color ='绿色' #定义类属性
def harvest(self,color):
print('水果是:', color)
print('水果成熟')
print('水果未成熟时是:',Fruit.color )
class Apple(Fruit): #定义苹果类
color = '红色'
def __init__(self):
print('苹果')
def harvest(self, color):
print('苹果是:', color)
print('苹果成熟')
print('苹果未成熟时是:', Fruit.color)
class Orange(Fruit): #定义橙子类
color = '橙色'
def __init__(self):
print('橙子')
def harvest(self, color):
print('橙子是:', color)
print('橙子成熟')
print('橙子未成熟时是:', Fruit.color)
apple = Apple() #创建类的实例
apple.harvest(apple.color) #调用基类的harvest()方法
orange = Orange()
orange.harvest(orange.color)
运行结果如下:
苹果 苹果是: 红色 苹果成熟 苹果未成熟时是: 绿色 橙子 橙子是: 橙色 橙子成熟 橙子未成熟时是: 绿色



