gpt4 book ai didi

python - 是否可以在不实例化类的情况下导入类方法?

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:14 24 4
gpt4 key购买 nike

类位于 my_module.py 中的某处

我可以这样访问他的方法

from .my_module import Mailer

mailer = Mailer()
mailer.do_stuff()

但是如果我可以只从类中导入 do_stuff 方法呢?如果是这样,我可以不仅导入静态方法吗?

最佳答案

您可以访问类的 classstatic 方法,而无需创建实例。例如,采取以下演示类:

class Demo(object):

def instance_method(self):
print "Called an instance method"

@classmethod
def class_method(cls):
print "Called a class method"

@staticmethod
def static_method():
print "Called a static method"

现在我们可以直接在类上调用其中两个方法:

>>> Demo.class_method()
Called a class method
>>> Demo.static_method()
Called a static method

但是我们不能调用instance 方法,因为我们没有self 参数的实例:

>>> Demo.instance_method()

Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
Demo.instance_method()
TypeError: unbound method instance_method() must be called with Demo instance as first argument (got nothing instead)

您可以在实例上调用所有三种类型的方法:

>>> instance = Demo()
>>> instance.class_method()
Called a class method
>>> instance.static_method()
Called a static method
>>> instance.instance_method()
Called an instance method

请注意,静态方法不使用任何类或实例属性,因此它们与函数非常相似。如果您发现自己想在不引用类或实例的情况下调用函数,只需将其分解为函数即可。

关于python - 是否可以在不实例化类的情况下导入类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com