<span class="k">class</span> <span class="nc">Kls</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span> <span class="k">def</span> <span class="nf">printd</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="n">ik1</span> <span class="o">=</span> <span class="n">Kls</span><span class="p">(</span><span class="s">'arun'</span><span class="p">)</span> <span class="n">ik2</span> <span class="o">=</span> <span class="n">Kls</span><span class="p">(</span><span class="s">'seema'</span><span class="p">)</span> <span class="n">ik1</span><span class="o">.</span><span class="n">printd</span><span class="p">()</span> <span class="n">ik2</span><span class="o">.</span><span class="n">printd</span><span class="p">()</span>
@classmethod means: when this method is called, we pass the class as the first argument instead of the instance of that class (as we normally do with methods). This means you can use the class and its properties inside that method rather than a particular instance.
@staticmethod means: when this method is called, we don't pass an instance of the class to it (as we normally do with methods). This means you can put a function inside a class but you can't access the instance of that class (this is useful when your method does not use the instance).
投票最高的回答比较基础,稍微进阶一点的看下下面的stackoverflow上的回答,回答top1与top2class Utility(object): @staticmethod def list_all_files_in_dir(dir_path): ...
from random import choice COLORS = ['Brown','Black','Golden'] class Animal(object): def __init__(self,color): self.color = color @classmethod def make_baby(cls): color = choice(COLORS) print cls return cls(color) @staticmethod def speak(): print 'Rora' class Dog(Animal): @staticmethod def speak(): print "Bark!" @classmethod def make_baby(cls): print "making dog baby!" print cls return super(Dog,cls).make_baby() class Cat(Animal): pass d = Dog('Brown') print d.color pup = d.make_baby() pup print pup.color 注意 static method 和 class method 在继承中的区别