Python:类

xiaoxiao2025-04-27  11

定义方法: class类名: ... 类也是对象,它是能创建实例的对象

类变量

类变量是类的属性,此属性属于类,不属于此类的实例 作用: 通常用来存储该类创建的对象的共有属性 说明: 类变量可以通过该类直接访问 类变量可以通过类的实例直接访问(取值) 类变量可以通过此类的对象__class__属性间接访问 class human: total_count=0 #创建一个类变量 print('human.total=',human.total_count) human.total_count+=100 print(human.total_count) #100 human.class_var=200#创建第二个类变量 print(dir(human)) class human: total_count=0 #创建一个类变量 h1=human()#创建一个实例 print(h1.total_count)#0 h1没有属性访问类变量 h1.total_count=100 #创建实例变量 print(h1.total_count)#100 class human: total_count=0 #创建一个类变量 def __init__(self): self.__class__.total_count+=1 h1=human()#创建一个实例 l=[] l.append(human()) l.append(human()) l.append(human) print(human.total_count,'个对象')#3 实例方法和类方法都是类的变量(类变量)

类的文档字符串:

类内第一个没有赋值给任何变量的字符串为类的文档字符串 类的文档字符串绑定在类的__doc__属性上 示例: class dog: '''dog类的文档字符串''' def infos(self): '''这是dog类内infos方法的文档字符串''' >>>help(dog) >>>print(dog.__doc__)

类的__slots__列表:

作用: 限定一个类创建的实例只能在固定的属性(实际变量) 不允许对象添加此列表以外的实例属性 访问用户因错写属性名而发生程序错误 说明: __slots__属性是一个列表,列表的值是字符串 含有__slots__属性的类所创建的实例对象没有 __dict__属性,即此实例不用字典来存储实例属性 # class human: # def __init__(self,n,a): # self.name=n # self.age=a # def show__info(self): # print(self.name,'今年',self.age,'岁') # h1=human('tarena',15) # h1.show__info() #15岁 # h1.Age=16 #大写Age # h1.show__info()#15岁 # print(h1.__dict__)#{'name': 'tarena', 'age': 15, 'Age': 16} class human: #此__slots__列表让human创建的对象只允许有name和age属性 __slots__={'name','age'}#############__slots__ def __init__(self,n,a): self.name=n self.age=a def show__info(self): print(self.name,'今年',self.age,'岁') h1=human('tarena',15) h1.show__info() #15岁 # h1.Age=16 #此处报错,因为此属性不在__slots__列表内 h1.show__info()#15岁

类方法@classmethod

类方法是用于描述类的行为的放法,此方法属于类,不属于该类创建的对象 说明: 1.类方法需要使用@classmethod装饰器定义 2.类方法至少有一个形参,第一个形参用于绑定类,约定写为‘cls’ 3.类和该类的实例都可以调用类方法 4.类方法不能访问此类创建的对象的实例属性 class a: v=100 #类变量 @classmethod def get_v(cls): #cls-->class '''这是一个类方法,用来获取类变量v的值''' return cls.v @classmethod def set_v(cls,b): cls.v=b print(a.get_v())#100获取类变量v的值 a.set_v(200) print(a.get_v())#200 A=a() #类和该类的实例都可以调用类方法 print(A.get_v())# 200 该类的实例可以调用类方法

静态方法@staticmethod

静态方法是定义在类内的函数,此函数的作用域是类的内部 说明: 静态方法需要使用@staticmethod装饰器定义 2.静态方法与普通函数定义相同,不需要传入self和cls参数 3.静态方法只能凭借该类或类的实例调用 4.静态方法不能访问类变量和实例变量 **#此实例示意静态方法的定义的使用** class A: @staticmethod def myadd(a,b): return a+b print(A.myadd(100,200))# 300调用静态方法 a=A() print(a.myadd(30,40)) #70 函数,静态方法,类方法,实例方法 共性: 语句块,实现相应的功能
转载请注明原文地址: https://www.6miu.com/read-5029221.html

最新回复(0)