楼主: CDA网校
676 0

[每天一个数据分析师] 类方法--戴着@classmethod帽子的函数 [推广有奖]

管理员

已卖:189份资源

泰斗

3%

还不是VIP/贵宾

-

威望
3
论坛币
118687 个
通用积分
10381.1419
学术水平
278 点
热心指数
286 点
信用等级
253 点
经验
228235 点
帖子
6932
精华
19
在线时间
4378 小时
注册时间
2019-9-13
最后登录
2026-1-8

初级热心勋章

楼主
CDA网校 学生认证  发表于 2022-4-22 15:29:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

作者:Kevin

来源:麦叔编程

081篇,讲解了@property和@staticmethod的用法,有看官就表示@staticmethod都说了为什么不把@classmethod也拿出来说说?今天的三分钟就专门讲解下@classmethod。

@classmethod

@classmethod与@staticmethod的区别

废话不多说,直接上代码:

class Circle: PI = 3.14159  @classmethod def calculate_area(cls, radius): a = (radius**2)*cls.PI return aca = Circle.calculate_area(4)print("面积是:",ca)================================ class Circle:  @staticmethod def area(radius): # 没有self关键字,但是需要传入参数 a = (radius**2)*3.14159 return aa = Circle.area(4) # 无需实例化,直接从类里调 print("面积:",a)

对比之下我们发现类方法@classmethod的首个参数为cls,这个cls指向的是类本身。

cls.PI的含义就是,我的PI是从类里(cls)拿来用的。

而静态方法@staticmethod没有cls参数,所以它是拿不到类里存在的一些变量和方法,「没错还有方法」。

下面演示一下怎么用类方法@classmethod去调用实例方法(注意代码中的注释):

class Circle: PI = 3.14159 # 类中的常量PI @classmethod def get_area(cls, radius): # 类方法 a = cls(radius).calculate() # 调用实例函数得到面积值,cls(radius)可以理解成实例化 return a def __init__(self, radius): # 构造方法,传入半径值radius self.radius = radius def calculate(self): # 实例方法,计算面积值a a = (self.radius**2)*self.PI return aca = Circle.get_area(4)print("面积是:",ca)

看了上面的代码是不是感觉有点上头了?算个圆形面积,竟然搞了那么多代码。return (radius**2)*PI不香么?

但是我还是希望大家能好好理解下类函数的用法,如果本篇的内容能理解个七七八八,那么恭喜你,你已经超越了90%的Python学习者了。



      相关帖子DA内容精选
  • 大厂数据分析面试指南!来自亚马逊、谷歌、微软、头条、美团的面试问题!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Method ETH SME SSM calculate

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 18:32