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

如题,求教为什么is_valid不带self,而permeter要带self?classTriangle(object):def__init__(self,a,b,c):... 如题,求教为什么is_valid不带self,而permeter要带self?
class Triangle(object):

def __init__(self, a, b, c):
self._a = a
self._b = b
self._c = c

@staticmethod
def is_valid(a, b, c):
return a + b > c and b + c > a and a + c > b

def perimeter(self):
return self._a + self._b + self._c
展开
 我来答
莱茵河的香槟
2019-06-26
知道答主
回答量:9
采纳率:0%
帮助的人:1.7万
展开全部
定义一个函数就是定义一个方法,self是自身,调用的时候如果需要传入魔法方法__init__(初始定义的值【也就是参数】)时就需要带self,不需要则可以在函数(即方法)前加修饰@staticmethod,就不用带self参数了。
百度网友8e4ee6d
2019-06-26 · TA获得超过1137个赞
知道小有建树答主
回答量:887
采纳率:78%
帮助的人:357万
展开全部
is_valid的上面有个staticmethod的装饰器,字面意思是静态方法,说明它是类的静态方法,不需要实例化就可以直接调用的,所以没有self,而perimeter是实例方法,self代表的就是具体的实例,它需要类实例化后才能调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风驰电掣happy
2019-06-25 · TA获得超过136个赞
知道小有建树答主
回答量:226
采纳率:63%
帮助的人:79.4万
展开全部
你的问题本身就有问题,方法其实就是函数只不过他在类里面叫他为方法,你应该看的是类的定义与函数的区别,class是类,他里面的self是表示通过类生成的对象
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式