mik*_*iku 30
有两种选择:
例:
class A(object):
def a1(self):
""" This is an instance method. """
print "Hello from an instance of A"
@classmethod
def a2(cls):
""" This a classmethod. """
print "Hello from class A"
class B(object):
def b1(self):
print A().a1() # => prints 'Hello from an instance of A'
print A.a2() # => 'Hello from class A'
Run Code Online (Sandbox Code Playgroud)
或者使用继承(如果适用):
class A(object):
def a1(self):
print "Hello from Superclass"
class B(A):
pass
B().a1() # => prints 'Hello from Superclass'
Run Code Online (Sandbox Code Playgroud)
Mic*_*yan 24
有几种方法:
以下示例使用每个示例共享打印成员的函数.
遗产
class Common(object):
def __init__(self,x):
self.x = x
def sharedMethod(self):
print self.x
class Alpha(Common):
def __init__(self):
Common.__init__(self,"Alpha")
class Bravo(Common):
def __init__(self):
Common.__init__(self,"Bravo")
Run Code Online (Sandbox Code Playgroud)
代表团
class Common(object):
def __init__(self,x):
self.x = x
def sharedMethod(self):
print self.x
class Alpha(object):
def __init__(self):
self.common = Common("Alpha")
def sharedMethod(self):
self.common.sharedMethod()
class Bravo(object):
def __init__(self):
self.common = Common("Bravo")
def sharedMethod(self):
self.common.sharedMethod()
Run Code Online (Sandbox Code Playgroud)
超级偷偷摸摸的委托
此解决方案基于以下事实:Python成员函数没有什么特别之处; 只要将第一个参数解释为类的实例,就可以使用任何函数或可调用对象.
def commonPrint(self):
print self.x
class Alpha(object):
def __init__(self):
self.x = "Alpha"
sharedMethod = commonPrint
class Bravo(object):
def __init__(self):
self.x = "Bravo"
sharedMethod = commonPrint
Run Code Online (Sandbox Code Playgroud)
或者,类似的偷偷摸摸的实现委派的方法是使用可调用对象:
class Printable(object):
def __init__(self,x):
self.x = x
def __call__(self):
print self.x
class Alpha(object):
def __init__(self):
self.sharedMethod = Printable("Alpha")
class Bravo(object):
def __init__(self):
self.sharedMethod = Printable("Bravo")
Run Code Online (Sandbox Code Playgroud)
您创建一个类,两个类都从该类继承.
有多个继承,所以如果他们已经有父,那就不是问题了.
class master ():
def stuff (self):
pass
class first (master):
pass
class second (master):
pass
ichi=first()
ni=second()
ichi.stuff()
ni.stuff()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46189 次 |
| 最近记录: |