静态属性、类方法、静态方法
@property 将函数属性伪装成数据属性 静态属性
@classmethod #类方法,专门给类使用,与实例无关,类方法只能访问类相关的属性,不能访问实例属性(与实例无关。。。)
@staticmethod #类的工具包,staticmethod静态方法只是名义上的归属类管理,不能使用类变量和实例变量
class Student: date = 'testdate' #姓名,性别,年龄 def __init__(self,stu_name,stu_sex,stu_age,length,width,heigh): self.stu_name = stu_name self.stu_sex = stu_sex self.stu_age = stu_age self.length = length self.width = width self.heigh = heigh @classmethod #类方法,专门给类使用,与实例无关,类方法只能访问类相关的属性,不能访问实例属性(与实例无关。。。) def go_school(cls,x): print('--->',cls,cls.date,x) # def go_school(self):#,vehicle # print('%s骑着一个风似风火似火的上学了'%self.stu_name)#,vehicle # return 1 @property #将函数属性伪装成数据属性 def cal_area(self): print('%s 身高%s身宽%s 体积%s'%(self.stu_name,self.heigh,self.width,self.heigh*self.width)) @staticmethod #类的工具包,staticmethod静态方法只是名义上的归属类管理,不能使用类变量和实例变量 def test1(x,y): #类和实例都可以调用 print(x,y) def test2(x,y): #没有任何意义,类可调用,实例不能调用,self自动传 print(x,y) stu1 = Student('李大江','男',18,2,0.2,2) # print(stu1.cal_area) #函数属性伪装成数据属性的方式去调用 # print(stu1.stu_name) Student.go_school(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 实例:只有数据属性 类:有数据属性和函数属性 实例对象:可以调用类的数据属性和函数属性(依据函数作用域) @property (静态属性) - - - - >将函数属性,伪装成数据属性访问 类:不能调用 (调用只能拿到一个内存地址,并不会执行(拿到内存地址没什么用)) 实例:可以调用 @classmethod (类方法) - - - - >与类绑定,与实例无任何关系 类:可以调用 实例:不可以调用 (其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用) @staticmethod (静态方法 - 类的工具包) - - - - >不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性 类:可以调用 实例:可以调用 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | class Desk_base( object ): def f2( self ): pass class Desk(Desk_base): i = 'i类属性' #类属性 #类:不可以调用 #实例对象:可以调用 #实例属性 def __init__( self ,name,width,length,heigh): self .name = name #实例属性 self .width = width self .length = length self .heigha = heigh #类:可以调用 #实例:不可以调用 #定义函数属性,但是没有任何意义,没有这样定义的,但不是错误 def test_not_self(): print ( '没有传self的方法' ) #类:可以调用 #实例:可以调用 #类的函数属性 def test_self( self ): print ( '类的普通方法' ) return self .name #类:不能调用(调用只能拿到一个内存地址,并不会执行) #实例:可以调用 #与实例绑定,将函数属性,伪装成数据属性 @property # 静态属性 def test_property( self ): return self .name #类:可以调用 #实例:不可以调用(其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用) #与类绑定,与实例无任何关系 @classmethod #类方法 def test_classmethod( cls ): ''' 类方法不能调用实例属性 可以调用类方法或类属性 :return: ''' return cls .i #类:可以调用 #实例:可以调用 #不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性 @staticmethod #静态方法(类的工具包) def test_staticmethod(): return '静态方法' d1 = Desk( 'zk' , 100 , 100 , 101 ) ''' 实例:只有数据属性 类:有数据属性和函数属性 实例对象:可以调用类的数据属性和函数属性(依据函数作用域) @property(静态属性)---->将函数属性,伪装成数据属性访问 类:不能调用 (调用只能拿到一个内存地址,并不会执行(拿到内存地址没什么用)) 实例:可以调用 @classmethod(类方法)---->与类绑定,与实例无任何关系 类:可以调用 实例:不可以调用 (其实可以调用d1.test_classmethod(),不会出错,但是一般不会这样定义和调用) @staticmethod(静态方法-类的工具包)---->不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性 类:可以调用 实例:可以调用 ''' |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性