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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中方法和函数的区别是啥?啥时候要带self?相关的知识,希望对你有一定的参考价值。

如题,求教为什么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

定义一个函数就是定义一个方法,self是自身,调用的时候如果需要传入魔法方法__init__(初始定义的值【也就是参数】)时就需要带self,不需要则可以在函数(即方法)前加修饰@staticmethod,就不用带self参数了。 参考技术A is_valid的上面有个staticmethod的装饰器,字面意思是静态方法,说明它是类的静态方法,不需要实例化就可以直接调用的,所以没有self,而perimeter是实例方法,self代表的就是具体的实例,它需要类实例化后才能调用 参考技术B 你的问题本身就有问题,方法其实就是函数只不过他在类里面叫他为方法,你应该看的是类的定义与函数的区别,class是类,他里面的self是表示通过类生成的对象

java 中abstract和virtual的区别是啥?有啥用处?

如题,java 中abstract和virtual的区别是什么?有什么用处?
sorry,是C#

参考技术A virtual是C#中的吧 你是问C#中abstract和virtual的区别吧

虚方法:由virtual声明,它允许在派生类中被重写,要重写方法,必须先声名为virtual
public class myclass

public virtual int myint()

函数体;


class myclass1:myclass

public override int myint()

函数体1;



抽象类、抽象函数:由abstract声明,在抽象类中可以定义抽象方法,抽象方法基本没有执行代码,派生类必须重写它,提供其执行代码
public abstract class myclass

public abstract int myint();

public class myclass1:myclass

public override int myint()

函数体;



两者不同本回答被提问者采纳
参考技术B java中virtual关键字么?
我没用过。
参考技术C java中没有virtual关键字!

以上是关于python中方法和函数的区别是啥?啥时候要带self?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL作图要带数据源是啥意思

播放器中的shuffle是啥意思,和random有啥区别

请问各位HTML高手 addClass和append都是添加的意思 它们俩有啥区别呢 都是啥时候用呢

python中return和yield怎么用的?两个有啥区别?

java 中abstract和virtual的区别是啥?有啥用处?

Java中的异常的捕获和抛出是啥意思,有啥区别