什么是静态函数??不需要对象就可以调用的函数怎么理解???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是静态函数??不需要对象就可以调用的函数怎么理解???相关的知识,希望对你有一定的参考价值。

就是只适用与修改类静态成员(static关键字)的函数。由于他属于类但是不属于对象,所以调用他的时候不用对象调用而用类范围声明,例如
class A

int i;
static j;
static void f1()

i++;//非法
j++;//合法


int main ()

A a;
a.f1();//非法
A::f1();//合法
return 0;
参考技术A 静态函数一般就是调用时候不会改变对象的调用,静态调用的对象处理都是在静态函数内部处理,不需要在外部进行修改或者处理

Python调用函数问题?

为什么调用有的函数需要加(),有的不用加,如下图content不需要加,decode需要加

content是个Response对象的属性 (有点类似变量), 而decode是bytes的一个方法
方法在使用(调用/执行)的时候是需要加括号的, 如果不加括号就会返回这个方法本身(类似函数指针), 而变量/成员字段/属性是不能加括号的(除非它实现了__call__()方法)追问

content不是requests下面的吗?和response是什么关系?
这种调用属性或者方法的方式,可以一直调用吗?(r.content.encode().decode()...像这种一直...下去)

追答

    content是r的属性, r是Response类的对象(requests.get()方法返回值)

    可以, 函数是可以连续调用的, 调用的是前面那个方法返回的对象的成员方法

参考技术A 加和不加都是有文档的,并不是凭空想象的,也就是说你需要看别人库的文档甚至源码,才知道究竟加不加
加的定义的时候是函数,不加的定义的时候是属性/字段
参考技术B 就像tkinter(python的gui库),
你说函数加括号,它可以加,用lambda,
默认不加,因为这是一个参数,就像:
def do(command):
--command("hello")
这时候,调用do函数是不加参的:
do(print)
如果用lambda:
do(lambda a:print("hello everybody!"))
就不是显示hello而是hello everybody!了

以上是关于什么是静态函数??不需要对象就可以调用的函数怎么理解???的主要内容,如果未能解决你的问题,请参考以下文章

C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???

mfc 时钟 OnTimer 非静态成员函数的非法调用

c# 有调用一个类的静态方法,是不是执行这个类的构造函数

C++中得sort函数的比较函数(第三个参数)为什么要声明为static

static成员函数和static 成员变量的作用

如何处理构造函数的失败?