Python基础教程:类Class
前言
本章将讲解一下python的类以及类的实例化、继承、等等方法,如若有解释不好的地方,欢迎大家指正一、类和实例?
1.类的定义
类,想必了解过C++、JAVA的码友们都知道,python中的类也是使用关键字class进行定义的,下面是其基本的语法格式:class 类名:
多个类属性...
多个类方法...
代码如下(示例):
class Student: #定义一个学生类
name = "LiMing" #类属性
def printName(self,): #类方法
print ('该学生名字是:',self.name)
print(Student.name) #使用类对象的属性
s = Student() # 实例化对象
s.printName()
s.name = "ZhangSan" #实例化对象改变name的信息
2.类的调用
class语句执行后,类对象即被创建,便可进一步使用类对象来访问类的属性、创建实例对象。类的方法通常不能通过类对象直接调用,因为方法的第一个参数为self,它代表实例对象,只能通过实例对象来调用方法
注意:类的方法函数的第一个参数默认为self,表示引用方法的对象实例。在方法中对self的属性赋值才会创建属于实例对象的属性。
3.构造函数及析构函数:
构造函数在调用类创建实例对象时自动被调用,完成对实例对象的初始化。析构函数在实例对象被回收时调用。在定义类时,可以不定义构造函数和析构函数。。Python 类中,手动添加构造方法以及析构方法的语法格式如下:
# 构造函数
def __init__(slef,...):
代码块
# 析构函数
def __del__(slef,...):
代码块
注:此方法的方法名中,开头和结尾各有 2 个下划线,且中间不能有空格。
二、继承和多态
1.继承
Python 中子类会继承父类所有的类属性和类方法。
代码如下:
# 代码改进前:
class Animal: #定义一个动物类
def __init__(self,name):
self.name = name
def greet(self):
print("Hello,I am an %s."%self.name)
class Dog():
def __init__(self,name):
self.name = name
def greet(self):
print("WangWang......,I am an %s."%self.name)
animal = Animal('animal')
animal.greet()
dog = Dog("dog")
dog.greet()
改进后的代码如下:
# 代码改进后:
class Dog(Animal):
def greet(self):
print("WangWang......,I am an %s."%self.name)
dog = Dog("dog")
dog.greet()
通过两段代码的对比,可以发现定义的狗狗类继承了Animal类的属性,更改了,父类中方法的输出,使得减少而重复性的代码量,达到了简介高效的作用。
2.继承
代码如下(示例):
class Animal: #定义一个动物类
同上
class Dog(Animal):
同上
class Cat(Animal):
def greet(self):
print("MiaoMiao......,I am an %s."%self.name)
def hello(Animal): # 多态使用
Animal.greet()
dog = Dog("dog")
hello(dog)
cat = Cat("cat")
hello(cat)
通过上面代码的展示,我们可以体会到多态的妙用,减少了代码中重复性的工作。
三、调用父类的构造方法
在子类中的构造方法中,调用父类构造方法的方式有 2 种,分别是:
1、类可以看做一个独立空间,在类的外部调用其中的实例方法,可以向调用普通函数那样,只不过需要额外备注类名(此方式又称为未绑定方法);
2、使用 super() 函数。但如果涉及多继承,该函数只能调用第一个直接父类的构造方法。
# Python 2.x 中,super() 函数的使用语法格式如下:
super(Class, obj).__init__(self,...)
# Python 3.x 中,super() 函数有一种更简单的语法格式:
super().__init__(self,...)
[参考链接]http://c.biancheng.net/view/2290.html