class Organism(object):
def reproduce(self):
#use self here to customize the new organism ...
return Organism()
另一种选择——如果实例 ( self
) 未在方法中使用:
class Organism(object):
@classmethod
def reproduce(cls):
return cls()
这确保有机体产生更多有机体并且(从有机体派生的假设博格产生更多博格)。
不需要使用的另一个好处self
是,除了可以从实例调用之外,现在还可以直接从类调用它:
new_organism0 = Organism.reproduce() # Creates a new organism
new_organism1 = new_organism0.reproduce() # Also creates a new organism
最后,如果在方法中同时使用了实例 ( self
) 和类(Organism
或从子类调用的子类):
class Organism(object):
def reproduce(self):
#use self here to customize the new organism ...
return self.__class__() # same as cls = type(self); return cls()
在每种情况下,您都可以将其用作:
organism = Organism()
new_organism = organism.reproduce()