好!我们题接上文,现在你看着这个到达两位数的代码量不知所措,def也用了,好听的变量名也用了,还是太短了。这个时候就可以开始用类来使程序更加完整了。
类,对象,描述一个物体。在系统的构建中算是重要的一部分。而把一种解决问题的方法换成具象成对对象的描述,是规模化程序的一个重要思想。
于是你马不停蹄的跑去菜鸟教程,把类的基本知识爆看一顿,瞬间觉得自己突飞猛进。再修改代码。于是成了下面这样。
class operation:
def __init__(self, formula: str, mode: int = 1):
"""
To see what we can do
:param formula: make an easy operation
:param mode: choose mode to count
"""
print('Here is your answer')
self.formual = formula
self.mode = mode
if self.mode == 1:
print(self.easy_count())
if self.mode == 2:
print(self.complex_count())
def easy_count(self):
pure_formula = self.formual.strip('=')
return eval(pure_formula)
def complex_count(self):
return 'Sorry, this function still in development'
if __name__ == '__main__':
operation(input('This class is for easy formula test, write down here...'), int(input('choose your mode here...')))
喔哈哈哈。看起来已经多了不少,现在把它看成一个物体后是不是变得充实了不少,甚至可以不止步于此,再往里面添加完整的需求诸如报错的方法,如果在easy_count中出错自动转换到complex_count方法等等等等。让它更像一个系统,重要的就是可以让他面对更多的情况,拥有更完善的功能。
注释也是很重要的一部分,在以后对接工程或是完善工程时是不可或缺的一部分。不要吝啬你的注释,这也是系统的一部分。
随着你在这个类里不断添加代码,它会逐渐变的臃肿起来,一个类里头放了几百行代码,全是方法。而且尾部的if __name__ == '__main__'实在是有点丑,这时把他安置起来就显得格外重要,这时你就要开始面向多文件了。
你新开辟了一个py文件,叫做main,意思是这个文件是整个系统的入口,让它作为系统的main于是你的目录变成了这样。
你把它分成两个文件,把这个小尾巴扔进去,于是你的类在一个文件,入口也在一个文件。似乎具体了不少,更加简洁明了了。
在main里面:
from t_mose import operation
operation(input('This class is for easy formula test, write down here...'), int(input('choose your mode here...')))
在类里面还是不变,就是类。但是看这两个文件,还是太简单了,对别人来说根本不算是一个,甚至有些多余并且没必要。这个时候你需要的是更详细的文件分层管理。
这时在你桌面上新建一个文件夹,把原来这两个文件放进去,正式一点。
加上config,方便以后修改参数
加上readme,方便以后写框架文档
加个unitest模块,随着代码变多,它可以帮你快速测试代码
于是乎。。。
在config里
from caculate.t_mose import operation
DEFAULT_MODE = 1
DEFAULT_TYPE = 'EASY'
在operation里
from caculate.config import *
class operation:
def __init__(self, formula: str, mode: int = DEFAULT_MODE):
"""
To see what we can do
:param formula: make an easy operation
:param mode: choose mode to count
"""
print('Here is your answer')
self.formual = formula
self.mode = mode
if self.mode == 1:
print(self.easy_count())
if self.mode == 2:
print(self.complex_count())
def easy_count(self):
pure_formula = self.formual.strip('=')
return eval(pure_formula)
def complex_count(self):
return 'Sorry, this function still in development'
而这依然只是冰山一角,现在是初步构造了一个你自己的小小系统,以后如果有文件导入,多线程一类一类的,你依旧可以往里面添加东西,让它变得更加完善。
那么在学会高度自定义一个属于自己的系统后,下一步就是去嵌套别人的系统,从读懂别人的系统,到修改别人系统的代码,再到添加新的模块。我会在下一章节讲解高度自定义他人或是官方库的基础系统模板,减少造轮子的过程。