1 类的定义
类的理解:它是现实世界或思维世界中的实体在计算机中的反映,它将数据(类的数据成员)以及这些数据上的操作(方法,其他语言称为函数)封装在一起。
类就像一个模板,通过这个模板可以产生很多个对象
类的最基本的作用就是封装代码
class Student(): # 类的定义
name = "Lilly"
age = 18
def print_file(self):
print('name: '+self.name)
print('age: '+str(self.age))
student1 = Student() # 实例化
student1.print_file() # 调用类里面的方法
2 构造函数
class Student(): # 类的定义
name = ""
age = 0 # 此处name和age是类变量
def __init__(self,name,age): # 构造函数
print('*******')
self.name = name
self.age = age # 此处的self.name和self.age是实例变量,只和对象相关
def print_file(self):
print('name: '+self.name)
print('age: '+str(self.age))
student1 = Student('Tom',19) # 实例化
student2 = Student('Sam',18)
student1.print_file() # 调用类里面的方法
student2.print_file()
类变量和实例变量
类变量就是和类相关联的变量;
实例变量是和对象相关联的变量,在构造函数里通过self.变量名
来保存实例变量
类与对象的变量查找顺序
访问
一个实例变量,如果对象实例列表没有,会继续在类变量里去寻找。
3 self与实例方法
self代表的是对象实例;对于类下面的实例方法,在定义的时候self必须出现。但在调用实例方法的时候是不需要传入self的。
在实例方法中访问实例变量与类变量
方法需要对变量做一系列运算,然后去改变类的特征。
1. 实例方法与构造函数的调用方法不一样,构造函数的调用,是通过类名(变量)来调用,比如:student1=Student(‘qxn’,24)来调用,而实例方法是通过对象来调用的,比如:student.do_homework()来进行的。
2. 实例方法与构造函数的意义不同,实例方法主要是来描述类的行为,而构造函数主要是来初始化类的各种特征。
在实例方法中访问类变量
:
1. 通过类名.变量名来进行访问
2. 通过self.class.name来进行访问
4 类方法
@classmethod # 在方法上面加@classmethod装饰器表示类方法
def plus_sum(cls):
cls.sum += 1
print(cls.sum)
调用类方法:
直接用类来调用:
Student.plus_sum()
5 静态方法
- 静态方法装饰器@staticmethod
- 无需传入cls,self等参数,可以被类和方法调用
- 静态方法和类方法不能访问实例变量
- 静态方法可以被类方法代替,它与面向对象的关系很弱,和普通函数区别不大。不建议使用
6 成员可见性:公开和私有
变成私有的方法:变量或者方法前加双下划线
python可以通过在实例对象后加.__value的形式创建成员变量。————python的动态属性
7 子类方法调用父类方法:super关键字
调用形式:super(子类名,self).父类方法