定义类
class Student(): # 类变量 gender = '男' # 构造函数 def __init__(self, name, age): # 初始化实例变量 self.name = name self.age = age print('__init__ 方法实例化会自动执行') def say(self): print('say 方法'+self.gender)
类中的方法必须需要传入self,才能使用类中的属性
类变量和实例变量的区别
类变量是和类关联在一起的,实例变量是和实例变量关联在一起的
个人理解,实例对象相同的属性可以定义为类变量,不同的属性可以定义为实例变量
实例变量使用self.属性来定义的,类变量不需要
实例访问属性-》先到实例变量中查找-》再到类变量中查找
构造函数__init__
python中的__init__类似于js的constructor,在类被实例化的时候,会被自动执行,一般用来给类中的成员赋值
class Student(): # 构造函数 def __init__(self): print('__init__ 方法实例化会自动执行')
self
python中的self就像是js中的this指向的是当前对象,也就是指向对象本身的指针
如果是实例方法第一个参数必须传入self
实例方法访问类变量
class Student(): # 实例变量 sum = 0 # 构造函数 def __init__(self, name, age): # 初始化实例变量 self.name = name self.age = age self.__class__.sum += 1 print(self.sum) def say(self): print('say 方法'+str(self.sum))
类方法定义
默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器,只能访问类变量,不能访问实例变量
@classmethod def sun(cls): #访问类方法 print(Student.sum)
如果操作一个与对象无关的方法,一般使用类方法,在其他语言中对象是不允许调用类方法的,python中实例对象可以调用类方法
静态方法定义
用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。在静态方法里访问不了实例变量
@staticmethod def static_fun(): print('static 方法'+str(Student.sum))
静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名或者对象调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器。
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接