一、介绍类
类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
实例化:创建一个类的实例,类的具体对象。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法
1、方法:类中定义的函数
2、类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
3、实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
二、定义类
(1)class 关键字 声明一个类
(2)class 类定义方法
第一种:class 类名(object): 新式类
第二种:class 类名():
第三种:class 类名
(3)案例
class Lei(object):
a=20 #类变量
def init(self,a,b): #构造函数,初始化作用
self.a=a #实例变量
self.b=b #实例变量
def fs1(self): #方法1
print(self.a+1) #
def fs(self): #方法2
print(self.b+2)
if name == 'main':
dx=Lei(1,2) # 创建类的而对象 ,1,2就是一个实例
dx.fs1() #通过类的对象.调用方法1
dx.fs() ##通过类的对象.调用方法2
print(dx.a) #通过对象调实例变量
print(dx.b) #通过对象调实例变量
print(Lei.a) ##通过类名调类变量
(4)__init__初始化文件构造函数
1、定义类的时候__init__是一个构造函数,该函数是两个下划线开头和两个下划线结束,其作用就是当创建类的对象和实例时系统会自动调用构造函数,通过构造函数对类进行初始化操作
2、定义类的时候__init__方法中有一个参数self,这也是类中的方法与普通函数的区别,类的中的方法必须有一个参数self,而且位于参数列表的开头,在类中self就是代表类的当前类的实例(对象)自身,在python调用时无需传值,python会将对象自动传给self接受
三、类中的类变量、实例变量
1、类变量在类的下方,构造函数的上方
2、实例变量在构造函数的下方 self.开头
四.实例方法,类方法,静态方法
调用实例方法
1、实例方法
class Lei(object):
def init(self,a,b): #构造函数,初始化作用
self.a=a #实例变量
self.b=b #实例变量
def fs1(self): #实例方法1
print(self.a+1)
def fs(self): #实例方法2
print(self.b+2)
if name == 'main':
dx=Lei(1,2)
dx.fs1()
dx.fs()
class People(object):
def init(self,name):
self.name = name#实例变量
def play(self): #实例方法
print(self.name + '打篮球')
if name == 'main':
p = People('xiaowang')#创建对象
p.play()#对象调用实例方法
调用类方法
2、类方法
格式:@classmethod
def 函数名(cls):
print(类方法)
举例:
class People(object):
def init(self,name):
self.name = name #实例变量
@classmethod # 类方法,也叫动态方法
def play(cls): # cls 函数修饰,类方法
print("打篮球")
if name == 'main':
p = People('xiaowang') #创建对象
p.play() #类调用类方法
People.play() #对象调用类方法
3、静态方法
格式:@staticmethod
def 函数名():
print(静态方法)
举例:
class People(object): #自定义类
def init(self,name): #初始化数据
self.name=name
@staticmethod #静态方法
def play():
print("静态方法:打篮球")
p=People("xiaowang") #创建对象
p.play() #对象调用静态对象
People.play() #类调用静态对象
总结
class Lei(object):
a=20 #类变量def __init__(self,a,b): #构造函数,初始化作用self.a=a #实例变量self.b=b #实例变量def fs1(self): #方法1print(self.a+1) #def fs(self): #方法2print(self.b+2)@classmethod #类方法,也叫动态方法def l(cls): #cls 函数修饰print(cls.a)@staticmethod #私有方法,也叫静态方法def dy():print("dy")
if name == 'main':
dx=Lei(1,2) # 创建类的而对象 ,1,2就是一个实例dx.fs1() #通过类的对象.调用方法1dx.fs() ##通过类的对象.调用方法2print(dx.a) #通过对象调实例变量print(dx.b) #通过对象调实例变量print(Lei.a) ##通过类名调类变量dx.l()dx.dy()