Python 2 到 Python 3 迁移常见陷阱与代码迁移指南
1. 元类重复定义检查
在 Python 中,使用元类时,如果类字典中存在重复定义,会抛出 TypeError 异常。以下是示例代码:
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 3 严格区分文本字符串(字符)和二进制数据(字节)。像 "hello" 这样的字面量表示以 Unicode 存储的文本字符串,而 b"hello" 表示字节字符串(这里包含 ASCII 字母)。
在 Python 3 中, str 和 bytes 类型绝不能混合使
超级会员免费看
订阅专栏 解锁全文

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



