Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从类内部调用静态方法_Python_Static Methods - Fatal编程技术网

Python 从类内部调用静态方法

Python 从类内部调用静态方法,python,static-methods,Python,Static Methods,从类(包含静态方法)内部调用静态方法时,可以通过以下方式完成: Class.method()或self.method() 有什么区别? 每种方法的独特用例是什么 class TestStatic(object): @staticmethod def do_something(): print 'I am static' def use_me(self): self.do_something() # 1st way T

从类(包含静态方法)内部调用静态方法时,可以通过以下方式完成:
Class.method()或self.method()
有什么区别?
每种方法的独特用例是什么

class TestStatic(object):
    @staticmethod
    def do_something():
        print 'I am static'

    def use_me(self):
        self.do_something() # 1st way
        TestStatic.do_something() # 2nd way

t = TestStatic()
t.use_me()
印刷品

I am static
I am static

我认为
TestStatic.do\u something()
更好,因为它展示了对静态成员的理解。静态成员是属于类的对象和在类上调用的方法,在大多数情况下,它们是实用程序类。因此,通过类调用方法更合适。

通过使用
TestStatic.do\u something()
可以绕过子类上的任何重写:

class SubclassStatic(TestStatic):
    @staticmethod
    def do_something():
        print 'I am the subclass'

s = SubclassStatic()
s.use_me()
将打印

I am the subclass
I am static

这可能是你想要的,也可能不是。选择最符合您期望的方法。

Self更好。它与继承或重命名类一起工作。为了可读性,我更喜欢class.method。