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

请问在python中方法和函数的区别是什么?什么时候要带self?

请问在python中方法和函数的区别是什么?什么时候要带self?

BIG阳 2022-02-18 11:11:52
如题,求教为什么is_valid不带self,而permeter要带self?class Triangle(object):def __init__(self, a, b, c):self._a = aself._b = bself._c = c@staticmethoddef is_valid(a, b, c):return a + b > c and b + c > a and a + c > bdef perimeter(self):return self._a + self._b + self._c
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

你的问题本身就有问题,方法其实就是函数只不过他在类里面叫他为方法,你应该看的是类的定义与函数的区别,class是类,他里面的self是表示通过类生成的对象

查看完整回答
反对 回复 2022-02-21
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

定义一个函数就是定义一个方法,self是自身,调用的时候如果需要传入魔法方法__init__(初始定义的值【也就是参数】)时就需要带self,不需要则可以在函数(即方法)前加修饰@staticmethod,就不用带self参数了。

查看完整回答
反对 回复 2022-02-21
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

is_valid的上面有个staticmethod的装饰器,字面意思是静态方法,说明它是类的静态方法,不需要实例化就可以直接调用的,所以没有self,而perimeter是实例方法,self代表的就是具体的实例,它需要类实例化后才能调用

查看完整回答
反对 回复 2022-02-21
  • 3 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信