性向来是人类文明的禁忌,那是因为一旦放开这禁忌,那么「乱伦」会由于成本小而变得泛滥成灾,对人类群体的利益往往弊大于利,比如大脑与身体都尚未成熟的儿童怎么保护好自己的性权利?尚未经济独立的早恋少女怎么分娩并抚养子女?婚生子女和私生子之间怎么划分财产?同性恋怎么繁殖后代?性反转人士怎么上厕所?更别说近亲繁殖的子女往往具有基因缺陷了。
同理, 在编程语言中,类型的乱伦行为也是大忌 。一个类型家族的对象与另一个类型家族的对象发生关系,繁殖出新对象,如果父母彼此没有血缘(继承)关系,那么跟谁姓(类型),继承什么财产(属性)也比较好办,只要有章(语法与源代码)可循就行了,比如 C++ 用 operator 函数来规定双亲的繁殖行为。反之呢,乱伦现象就产生了!
事实上,我不觉得 Python 是真正意义上的强类型语言,因为它的 bool 是 int 的子类,且彼此可以发生关系。 原则上不同类型的对象不等值 ,但 Python 里 1 == True
返回 True, 而且 bool 与 int 类型可以进行四则运算,如果 True/False 真单纯被转换 int 类型且运算结果是 int 好了,但事实上 1 + False == True
依然返回 True
! 和直觉很不符,也就是说 您很难说清 bool 与 int 的私生子到底跟谁姓,其值到底是什么 ,所以我才说这叫乱伦嘛,弊大于利,所以我就一直避免这种运算。
同理, 对一切类似的乱伦行为保持警惕 。比如 C++ 的多重继承语法可能不好用,因为既然父母彼此生殖隔离,那就很难明确子女到底继承了什么样的基因(属性),说难听点就是个怪胎;还有,虽说 Python 支持在 if 语句里调用对象的 __bool__()
, 但您凭什么认为一切人都是男的?不光有天生的女性,也有爱女装的伪娘,您又是否有主宰后者上哪厕所的权利?所以说到底不要指望一切类型都显式支持 __bool__
, 可读性也不好,所以我便习惯在 if 语句里只用纯粹的 bool 类型对象。
Written with StackEdit .