Python ImportError: cannot import name ABC
2024-10-15 23:11:21
Python 3.5.2 测试可以运行
import sys
from abc import ABC,abstractmethod
class MyBase(ABC):
@abstractmethod
def func(self):
'''Implement in subclass'''
class MyClass(MyBase):
def func(self):
con = "%s %s" % (self.__class__.__name__,sys._getframe().f_code.co_name)
print(con)
obj = MyClass()
obj.func()
输出
MyClass func
python 2.7.12测试可以运行
import sys
from abc import ABCMeta, abstractmethod
class MyBase():
__metaclass__ = ABCMeta
@abstractmethod
def func(self):
'''Implement in subclass'''
class MyClass(MyBase):
def func(self):
con = "%s %s" % (self.__class__.__name__,sys._getframe().f_code.co_name)
print(con)
obj = MyClass()
obj.func()
输出
MyClass func
上面python2的代码在python3中也可以正常输出.
还有一种3.0-3.3的写法 不写了.
兼容后的代码
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import sys
if sys.version > '3':
from abc import ABC,abstractmethod
else:
from abc import ABCMeta, abstractmethod
if sys.version > '3':
class MyBase(ABC):
@abstractmethod
def func(self):
'''Implement in subclass'''
else:
class MyBase():
__metaclass__ = ABCMeta
@abstractmethod
def func(self):
'''Implement in subclass'''
class MyClass(MyBase):
def func(self):
con = "%s %s" % (self.__class__.__name__,sys._getframe().f_code.co_name)
print(con)
obj = MyClass()
obj.func()
最新文章
- 利用节点更改table内容
- iOS基础框架的搭建/国际化操作
- 项目配置laungchImage
- CoreAnimation-09-模拟时钟
- win8安装新字体
- HDU-4742 Pinball Game 3D 三维LIS
- js简单实现删除记录时的提示效果
- Struts学习之类型转换
- JavaScript 逗号表达式
- hibernate---一对一单向外键关联--XML
- Notification弹出实现
- Mysql --数据的增删改
- Android中粗字体
- 无需脑图 无需思维导图 看Word大纲视图
- Linux下docker报错syntax error:unexpected protocol at end of statement
- C. Lorenzo Von Matterhorn LCA
- leetcode 315. Count of Smaller Numbers After Self 两种思路
- Android开发(十三)——全屏滚动与listview
- python3之深浅拷贝
- SAP 财务模块 FI-TV 差旅管理