Python 3 迁移常见陷阱与代码转换指南
1. 元类与方法重定义
在 Python 中,若使用特定元类,当方法被重定义时会报错。示例代码如下:
if classdict.multiple:
raise TypeError("Multiple definitions exist")
return type.__new__(cls, name, bases, classdict)
若将此元类应用于其他类定义,当有方法被重定义时就会报错。例如:
class Foo(metaclass=MultiMeta):
def __init__(self):
pass
def __init__(self, x): # Error. __init__ multiply defined.
pass
2. 从 Python 2 迁移到 Python 3 的常见陷阱
2.1 文本与字节的区别
Python 3 严格区分文本字符串(字符)和二进制数据(字节)。像 "hello" 这样的字面量表示以 Unicode 存储的文本字符串,而 b"hello" 表示字节字符串(在此例中包含 ASCII 字母)。
在 Python 3 中, str 和 bytes 类型绝不能
超级会员免费看
订阅专栏 解锁全文
938

被折叠的 条评论
为什么被折叠?



