当前位置:首页 » 编程语言 » python调用静态方法调用

python调用静态方法调用

发布时间: 2024-10-22 19:23:51

python 静态方法可以访问类方法吗

Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的:
1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;
2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量;
3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法。

实现静态方法和类方法的两种方式
一、在Python 2.3及之前,用staticmethod和classmethod类型对象包装实现
例子如下(注意print里的说明):
class MyClass:
val1 = 'Value 1'
def __init__(self):
self.val2 = 'Value 2'
def staticmd():
print '静态方法,无法访问val1和val2'
smd = staticmethod(staticmd)

def classmd(cls):
print '类方法,类:' + str(cls) + ',val1:' + cls.val1 + ',无法访问val2的值'
cmd = classmethod(classmd)

执行:
>>> mc = MyClass()
>>> mc.smd()
>>> mc.cmd()
>>> MyClass.smd()
>>> MyClass.cmd()

二、在Python 2.4及之后,用装饰器(decorators)实现
装饰器使用@操作符,例子如下:
class MyClass:
val1 = 'Value 1'
def __init__(self):
self.val2 = 'Value 2'

@staticmethod
def staticmd():
print '静态方法,无法访问val1和val2'

@classmethod
def classmd(cls):
print '类方法,类:' + str(cls) + ',val1:' + cls.val1 + ',无法访问val2的值'

Ⅱ python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件

在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。

一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。

二、项目配置

1、打开settings.py,在底部添加:

2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):

(不过我经过实测,不加这一个,也可以完成静态文件的访问)
3、在html模板最上面添加:

然后在需要的地方按照这个格式进行调用,如:

最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。

Ⅲ 在调用一些Python里的函数的时候 为什么有些函数需要实例化有些不需要

如果一个方法是静态方法或类方法,那么,可以直接调用。
如果一个方法不是静态的,那么,它会需要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()

Ⅳ python 如何调用类的方法

以numpy为例,首先创建一个对象:

In[32]:a=numpp.arange(10)

然后,a就拥有了类的方法,例如求和:

In[33]:a.sum()
Out[33]:45

也可以使用类的方法,将其应用到类的对象上,例如:

In[34]:numpp.sum(a)
Out[34]:45

Ⅳ 为什么Python调用方法,有的前面加类名,有的不加

答: Python使用面向对象的方法进行编程时,确实有两种调用方法。第一,当被调用的方法是静态方法,那么这个时候无须实例化对象,直接按照类名.函数名格式即可,如math.sin(),在该函数的底层实现当中,使用了@staticmethod声明静态方法,我的理解是这样的,当某个方法经常被使用时,把它声明成静态方法会方便一些;第二,当被调用方法是非静态方法时,则必须先实例化一个对象,再进行方法调用。希望能够帮助到你。

例子

Ⅵ Python中的面向对象(进阶)

一、实例方法,类方法,静态方法

我们首先写一个类,里面包含这三种方法。

可以看到,我们用到了两个装饰器。

我们用类和实例分别调用下类方法

我们用类和实例分别调用下静态方法

静态方法其实就是把一个普通的函数写在类里,与直接在外层写一个函数是一样的,本质上是一个函数。

为了方便理解,我们分别打印下这些方法的类型

通过type()查看对象是方法还是函数

此外,还可以通过inspect模块判断某个对象是否是某种类型,返回布尔值。

用法


小Tips:概念理解

直接def定义的,我们叫做函数

把函数放到类里,我们叫做方法

方法可以通过装饰器staticmethod转为(放在方法里的)函数

继承

一个类继承另一个类时,会自动获得另一个类的所有属性和方法,被继承的类称之为父类,新类称为子类。子类拥有父类所有的属性和方法,并且可以定义自己的属性和方法

我们以上边的Rectangle类为父类来试一下


1)完全继承

可以看到,子类完全继承父类后,可以直接调用父类的所有方法。

2)部分继承

部分继承:继承父类后,修改父类的同名方法

我们试一下,Square继承Rectangle后,修改__init__()方法

3)拓展父类的方法

在保留父类中某个方法的代码同时,对方法进行拓展

可以在方法中加入"super().方法名"来实现


4)@property

热点内容
python怎么打开idle 发布:2024-10-22 21:25:56 浏览:754
安卓开发版怎么设置中文 发布:2024-10-22 21:18:09 浏览:941
安卓系统未找到固件怎么办 发布:2024-10-22 21:18:03 浏览:183
解压捏烟 发布:2024-10-22 21:17:57 浏览:388
二维otsu算法 发布:2024-10-22 21:06:23 浏览:634
福禄寿源码 发布:2024-10-22 21:06:13 浏览:434
pythongoagent 发布:2024-10-22 20:42:05 浏览:78
matlabpid算法 发布:2024-10-22 20:37:51 浏览:332
文件遍历编程 发布:2024-10-22 20:37:47 浏览:622
nip服务器地址在哪 发布:2024-10-22 20:17:48 浏览:621