在调用一些Python里的函数的时候 为啥有些函数需要实例化有些不需要?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在调用一些Python里的函数的时候 为啥有些函数需要实例化有些不需要?相关的知识,希望对你有一定的参考价值。
from PIL import Image
from torchvision import transforms
img_path = "E:/Pytorch/project1/ants/36439863_0bec9f554f.jpg"
img = Image.open(img_path)
# Totersor
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
例如这几行里面 Image.open(img_path)就可以直接往括号里面扔参数, 但是transforms.ToTensor()就需要先实例化给tensor_trans 再往里面扔参数呢
如果一个方法不是静态的,那么,它会需要self来访问实例中的某些属性,那么就只能在实例上调用。
你给出的代码中,tensor_trans = transforms.ToTensor()这一句,实际上只是简化引用,并没有实例化transforms。
作为示例:
class MyUtil(object):
....@staticmethod
....def fn1():
........return 'a'
....def fn2(self):
........return 'b'
对方法fn1,我们可以直接调用:
x = MyUtil.fn1()
但对于fn2,则只能实例化后调用:
util=MyUtil()
x = util.fn2()
当然,对于fn1,也可以在实例上调用:
util=MyUtil()
x = util.fn1()追问
那么如何判断这些库函数中那些是可以直接调用的呢?
追答pycharm中,可以ctrl+鼠标点击调用点(或在调用处按Ctrl+B)以跳转到相应的源代码,如果相应的方法有@staticmethod或@classmethod,则可以直接以【类名.方法名】的形式调用。
求助c语言大佬们,急! 为啥我多次调用函数,然而输出的时候只有第一层函数输出了,后几层的都没有输
求助c语言大佬们,急!
为什么我多次调用函数,然而输出的时候只有第一层函数输出了,后几层的都没有输如图,函数学的不怎么样,求解大佬们,真的有点急。。
不懂,可以讲具体点么,学的不怎么好,,,,
追答去掉所有case里的void。
追问谢谢,那是不是函数可以无限的套用,当最外层函数被调用的时候里面每一层函数的输出都会成功输出在界面上
追答栈空间是有限的(VC6默认为1M),过多的函数嵌套或递归调用会导致栈溢出。
追问那也就是说除了“无限套用”这句是错的,其他的都是对的对吧,
十分感谢
参考技术A 你的那个参数a数值有没有改变?另外没有循环重复调用,switch(a)只执行case a值到第一个break那段,而且函数调用前面不用再加void修饰符了以上是关于在调用一些Python里的函数的时候 为啥有些函数需要实例化有些不需要?的主要内容,如果未能解决你的问题,请参考以下文章