今天跟各位老铁们聊聊我这几天瞎折腾的“乱乱伦”的事儿,别想歪,我说的是代码!
事情是这样的,最近手头有个小项目,需要快速搞定一个数据处理的功能。一开始想着老老实实写个规规矩矩的函数,但写着写着就觉得没意思,想着能不能玩点花的,整点骚操作。
我先定义几个类,就像一家子的成员:
Grandfather
(爷爷类):定义一些基础属性和方法,比如年龄,姓名啥的。Father
(父亲类):继承爷爷类,加一些自己的属性,比如职业,收入啥的。Son
(儿子类):又继承父亲类,添加兴趣爱学习成绩之类的。
然后,我就开始“乱”来:
我先是让Grandfather
类“继承”Son
类,对,你没听错,爷爷继承孙子!当时的想法就是,看看会发生什么奇葩的事情。结果嘛编译器直接给我报个错,说循环继承,这肯定不行。
不死心,我又想着,能不能让Father
类直接“拥有”一个Grandfather
的实例,然后Son
类也“拥有”一个Father
的实例。这样,虽然不是直接继承,但也能实现某种程度上的“伦理关系”?
说干就干,我开始写代码:
先是在Father
类里加一个grandfather
属性,类型是Grandfather
。
python
class Father(Grandfather):
def __init__(self, name, age, job, grandfather):
super().__init__(name, age)
* = job
* = grandfather # 这里!
然后在Son
类里加一个father
属性,类型是Father
。
python
class Son(Father):
def __init__(self, name, age, job, father, hobby, grade):
super().__init__(name, age, job, *)
* = hobby
* = grade
* = father # 这里!
我开始实例化这些类:
python
grandfather = Grandfather("老王", 70)
father = Father("王建国", 40, "程序员", grandfather)
son = Son("王小明", 15, "学生", father, "打游戏", 90)
这下,我就可以通过*.name
访问到爷爷的名字,虽然绕点弯,但总算是实现某种程度上的“乱伦关系”。
我把这些类应用到我的数据处理功能中。
我把每个类都当成一个数据节点,通过这种“乱伦”的方式,把不同的数据节点连接起来,形成一个复杂的数据网络。虽然代码看起来有点奇怪,但跑起来还挺流畅的。
这回“乱乱伦”的尝试,虽然看起来有点不正经,但让我对类的继承和组合有更深刻的理解。也让我意识到,写代码不一定非要规规矩矩,偶尔玩点花的,也能带来意想不到的收获。
这种“乱伦”的代码只能在自己的小项目里玩玩,真要在生产环境里这么搞,估计会被同事打死的。
这回“乱乱伦”的经历,让我觉得写代码还是挺有意思的,下次有机会,我还想尝试更多有趣的骚操作!
还没有评论,来说两句吧...