我仍然处于Python学习阶段,但我已经了解了Python dunder方法(__init__
,__cmp__
,__add__
等等。 。)并且我可以说,这些是核心Python开发人员允许程序员为自己的类实现特殊方法的方法。
因此,似乎这些应该是明确定义的,并且仅限于核心开发人员指定的内容。但是今天(因为我开始学习SQLAlchemy),我遇到了他们自己的属性,如__tablename__
和__table_args__
对我来说,这令人困惑。我认为dunder方法或属性的Pythonic含义暗示它们是Python核心的一部分。但SQLAlchemy似乎将其用作隐藏ORM的低层部分的约定。
这是好习惯吗?如果我正在上课,我是否应该感到自由(甚至被鼓励)来构建我自己的dunder属性或方法?