Python中的有用继承.接口的替代方案

Seb*_*ler 1 python inheritance interface

嗨,据我所知,Python变量是无类型的.所以现在我想拥有一个基类

class baseClass:
 def x():
  print "yay"
Run Code Online (Sandbox Code Playgroud)

和两个子类

class sub1(baseClass):
 def x(): 
  print "sub1"

class sub2(baseClass):
 def x():
  print "sub2"
Run Code Online (Sandbox Code Playgroud)

在其他编程语言中,我可以像接口一样开发接口

baseClass c = new sub1()
Run Code Online (Sandbox Code Playgroud)

所以现在我可以使用c作为具有sub1功能的baseClass,也许在运行时我可以通过它来改变它

c = new sub2()
Run Code Online (Sandbox Code Playgroud)

这在python中也可能吗?

Gru*_*rig 5

是.

c = sub1()
c = sub2()
Run Code Online (Sandbox Code Playgroud)

但是基类和定义接口的概念是不必要的,因为python不是静态类型的.

编辑:

要在有效的Python中重写代码:

# This space where baseClass was defined intentionally left blank, 
# because it serves no purpose

class Sub1(object):
  def x(self): 
    print "sub1"

class Sub2(object):
  def x(self):
    print "sub2"

c = Sub1()
c = Sub2()
Run Code Online (Sandbox Code Playgroud)