为了账号安全,请及时绑定邮箱和手机立即绑定

不太懂类方法有啥用,能举例帮我理解一下么,谢啦!

因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。


正在回答

3 回答

类方法,可以用于不影响原有函数的情况下,重新构造函数。

有那么一个应用场景。比如类定义如下:

class exp(object):

     def __init__(self,y=2018,m=6,d=27):

        self.y = y

        self.m = m

        self.d = d 

    def get_date(self):

        print("年份:%s" % self.y)

        print("月份:%s" % self.m)

        print("某日:%s" % self.d)

这个类要求我们实例化时,输入y,m,d三个参数。

res = exp('2018','6','27')

res.get_date()

但假设我们获得的日期是字符串形式是“2018-06-27”时,就需要我们做转换处理。当然我们可以每次将字符串转换成y、m、d。这个太麻烦了。

此时,我们利用类方法解决这个问题

class exp(object):

     def __init__(self,y=2018,m=6,d=27):

        self.y = y

        self.m = m

        self.d = d 

    @classmethod

    def deal(cls,str):

        y,m,d = map(int,str.split('-'))

        #无意发现这是个懵逼的表情→('-')

        return cls(y,m,d)

    def get_date(self):

        print("年份:%s" % self.y)

        print("月份:%s" % self.m)

        print("某日:%s" % self.d)

这时候我们就可以下面这样来获得返回啦

resu = exp.deal('2018-06-27')

resu.get_date()

这样是否对你有帮助?

16 回复 有任何疑惑可以回复我~
#1

微sun 提问者

明白啦,谢谢你?
2018-06-27 回复 有任何疑惑可以回复我~
#2

窗子外的数学卷子

谢谢大牛
2018-11-03 回复 有任何疑惑可以回复我~
#3

慕UI325291

111
2019-08-02 回复 有任何疑惑可以回复我~

跟Java里面的静态类方法一个意思。不依赖具体实例,方便调用。

0 回复 有任何疑惑可以回复我~

假设有一个叫circle的类。其中有一个属性——半径,会在建立circle对象时赋值。

一个实例方法的例子:计算circle的面积。这儿方法会用到circle的半径的值,而半径的值属于特定的circle对象。

一个类方法发的例子:返回circle面积的公式。这个方法不会利用任何专属于某个circle对象的值,只和circle类相关。

6 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

不太懂类方法有啥用,能举例帮我理解一下么,谢啦!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信