静态属性、类方法、静态方法

@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(静态方法-类的工具包)---->不与类绑定,也不与对象绑定,名义上归属类管理,但是不能调用类属性和实例属性
类:可以调用
实例:可以调用

 

posted @   总要做些什么  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中新的强大生产力特性
点击右上角即可分享
微信分享提示