Python基本教程09 – 面向工具深入
我们熟悉了工具和类的根基观念。我们将进一步拓展,以便能实际运用工具和类。
挪用类的其它信息
上一讲中提到,在界说要领时,必需有self这一参数。这个参数暗示某个工具。工具拥有类的所有性质,那么我们可以通过self,挪用类属性。
class Human(object): laugh = 'hahahaha' def show_laugh(self): print self.laugh def laugh_100th(self): for i in range(100): self.show_laugh() li_lei = Human() li_lei.laugh_100th()
这里有一个类属性laugh。在要领show_laugh()中,通过self.laugh,挪用了该属性的值。
还可以用沟通的方法挪用其它要领。要领show_laugh(),在要领laugh_100th中()被挪用。
通过工具可以修改类属性值。但这是危险的。类属性被所有同一类及其子类的工具共享。类属性值的改变会影响所有的工具。
__init__()要领
__init__()是一个非凡要领(special method)。Python有一些非凡要领。Python会非凡的看待它们。非凡要领的特点是名字前后有两个下划线。
假如你在类中界说了__init__()这个要领,建设工具时,Python会自动挪用这个要领。这个进程也叫初始化。
class happyBird(Bird): def __init__(self,more_words): print 'We are happy birds.',more_words summer = happyBird('Happy,Happy!')
这里担任了Bird类,它的界说见上一讲。
屏幕上打印:
We are happy birds.Happy,Happy!
我们看到,尽量我们只是建设了summer工具,但__init__()要领被自动挪用了。最后一行的语句(summer = happyBird…)先建设了工具,然后执行:
summer.__init__(more_words)
'Happy,Happy!' 被通报给了__init__()的参数more_words
工具的性质
我们讲到了很多属性,但这些属性是类的属性。所有属于该类的工具会共享这些属性。好比说,鸟都有羽毛,鸡都不会飞。
在一些环境下,我们界说工具的性质,用于记录该工具的出格信息。好比说,人这个类。性别是某小我私家的一本性质,不是所有的人类都是男,可能都是女。这本性质的值跟着工具的差异而差异。李雷是人类的一个工具,性别是男;韩美美也是人类的一个工具,性别是女。
当界说类的要领时,必需要通报一个self的参数。这个参数指代的就是类的一个工具。我们可以通过哄骗self,来修改某个工具的性质。好比用类来新建一个工具,即下面例子中的li_lei, 那么li_lei就被self暗示。我们通过赋值给self.attribute,给li_lei这一工具增加一些性质,好比说性此外男女。self会通报给各个要领。在要领内部,可以通过引用self.attribute,查询或修改工具的性质。
这样,在类属性的之外,又给每个工具增添了各自特色的性质,从而能描写多样的世界。
class Human(object): def __init__(self, input_gender): self.gender = input_gender def printGender(self): print self.gender li_lei = Human('male') # 这里,'male'作为参数通报给__init__()要领的input_gender变量。 print li_lei.gender li_lei.printGender()
在初始化中,将参数input_gender,赋值给工具的性质,即self.gender。
li_lei拥有了工具性质gender。gender不是一个类属性。Python在成立了li_lei这一工具之后,利用li_lei.gender这一工具性质,专门储存属于工具li_lei的特有信息。
工具的性质也可以被其它要领挪用,挪用要领与类属性的挪用相似,正如在printGender()要领中的挪用。
总结
通过self挪用类属性
__init__(): 在成立工具时自动执行
类属性和工具的性质的区别