from abc import ABC, abstractmethod
class Device(ABC):
@abstractmethod
def fn(self):
raise NotImplementedError
def sync(self):
print("Start Sync ...")
self.fn()
print("Start Done.")
class PC(Device):
def fn(self):
print("PC Device fn!!!")
class Router(Device):
def fn(self):
print("Router Device sync")
def start_sync(d: Device):
d.sync()
if __name__ == '__main__':
p = PC()
r = Router()
start_sync(p) # Run p.fn()
start_sync(r) # Run r.fn()
请熟悉 Go 的大佬指导下,在 Go 中如何用接口与结构体实现类似的功能?(子类只需要重写 fn 方法,在 start_sync 处调用基类的 sync 时,能调用到子类重写后的 fn 方法)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.