类就是种类的意思。
基本上面对对象就是把同类的函数,变量打包放到一个包袱里,这个包袱就叫“类”。挺土气是吧?其实面对对象也并不就一定时髦,也可以俗不可耐,就看你包袱打的怎么样了。
这个 “类”一般上是以具体的东西为模板,譬如物种:人类,猫类;物品:家俱类,电器类。他里面打包的函数,基本上是针对这个类进行操作的,譬如人说话,人吃饭,人的鼻子人的嘴,猫逮耗子,家居磨损。
使用类的时候,我们先具体化他,把种类变成个体。人类变成某人,猫类变成某猫,家俱变成某件家俱。这个具体化的类,就是所谓的“对象(object)”。然后我们就可以使用这个具体人,猫,家居的函数,针对具体的人,物进行操作了,所谓操作对象。
定义类# class RenLei: def __init__(self, mingzi): # self 是一个固定参数名,代表这个对象自己。 self.mingzi = mingzi # 把名字存到对象自己的 mingzi 变量上。 def shui2(self): # 谁函数 return self.mingzi上面的例子,一开始就要求给这个对象一个名字。
在类的定义里,每一个函数,他的第一个参数,都是规定死的,必须是self。self代表这个对象自己。在对象内部,这个对像本身的变量,函数,都是通过这个self来存取的。
在调用类里的函数时,不用提供 self 这个参数,程序自动提供 self,让我们使用它其他的函数,变量。我们只要提供其他参数即可。
__init__() 这个函数是一个特殊的函数,他代表从类具体化到对象的时候,需要套用的公式。
通过类建立对象的时候,程序会自动调用 __init__()函数。所以它叫做初始化函数。建立对象的时候,有什么一开始的要求,都可以通过它来指定,比如要求“脚不大好头发没有麻子”。
当然如果没有初始要求,也可以不定义这个函数,那么程序就不会自动调用它了。
具体化类,建立对象# # 建立对象,提供的函数对应__init__() 函数,self 这个参数程序会自动提供,不用我们提供。 xiaozhang1 = RenLei("小张") mingzi = xiaozhang1.shui2() # 使用“对象名.函数名()”的格式来调用类里的函数。 print mingzi <-- "小张" 字符串的对象性质#Python 里的字符串,列表,元组,字典,它们本身都是面对对象的类,所以带有很多函数可以对自己进行操作,譬如:
a = "脚不大好 头发没有 麻子".split()split 是字符串这个类的函数,他可以把字符串在给定位置分割,当我们不给他参数的时候,会在所有空白位置分割,然后返回一个列表,里面是被割裂的字符串。
结果,a 的内容是 ["脚不大好", "头发没有", "麻子"],这是一个有3个元素的列表。
对于字符串,列表,字典之类的操作,请熟读说明手册对他们的说明,Python编程,主要就靠字符串,列表和字典了。
Python 程序员编程习惯#重中之重: 大量的使用 list 这个列表方式来存储、操作数据。一字长蛇阵是蟒蛇的绝招,多用没错。
写一个 Python 程序,我们一般的步骤是:
Python 运行,是从文件的上面往下走的,看到一条命令执行一条命令,一直到最后一行。当我们定义函数和类的时候,他们只是定义,而没有执行,所以Python 看到他们,先存起来,直到看到定义外的具体命令,才真正的执行。如果这个命令调用上面的函数,那么就把存起来的函数执行一下。
完整例子: 把一个两列的文件input.txt,分割成两个文件col1.txt, col2.txt,一个文件一列。 input.txt 内容:
a1 啊阿 ai1 挨埃哀 ao2 熬鳌翱獒程序内容:
def split_file(filename): # 把文件分成两列 col1 = [] # 存储第一列 col2 = [] fd = open(filename) # open 函数用来打开文件,返回一个文件对象 text = fd.read() # fd.read 读入文件fd 的内容。 lines = text.splitlines() # 把读入的内容分行 for line in lines: # 循环每一行 part = line.split(None, 1) # 分割一行。 col1.append(part[0]) # 把分割的第一部分放到col1后面。 col2.append(part[1]) return col1, col2 # 返回 col1, col2 def write_list(filename, alist): # 把文字列表内容写入文件 fd = open(filename, 'w') # 打开输出文件col1.txt,'w'指定使用写入模式。 for line in alist: fd.write(line + '\n') def main(): # 主函数,程序进入点,习惯性叫他 main() filename = 'input.txt' # 把输入文件名 input.txt 放进一个变量 col1, col2 = split_file(filename) # 调用分割函数,结果存入 col1, col2 write_list('col1.txt', col1) # 调用写入函数 write_list('col2.txt', col2) main() # 唯一的函数外命令,程序开始执行,调用上面的 main() 函数数。这里,输入的文件名是写死的 input.txt ,我们可以使用模块 optparse 来通过命令行读取用户提供的文件,会更灵活些,那些就是你研究过 optparse 以后的事了。
参考资料更多的功能,函数,请参考Python的官方教学和手册。
先熟悉:
熟悉这些,基本上编程没问题了。
深入 Python是一本经典的参考书,虽然没有涵盖所有Python模块的内容,但是对初学者基本够用。而且它是一个自由文件,说俗了就是合法免费的,又有中文翻译版,难得。
也可以参考 Python 绝对简明手册这个中文说明。