类(Class)

· 目的

面向对象的最主要目的是提高程序的重复使用性。

 

· 包括

属性(attribute)、方法(method)

 

· 示例

 1 class Bird(object):
 2     have_feather = True
 3     way_of_reproduction = 'egg'
 4     def move(self, dx, dy):
 5         position = [0,0]
 6         position[0] = position[0] + dx
 7         position[1] = position[1] + dy
 8         return position
 9 
10 summer = Bird()
11 print 'after move:',summer.move(5,8)
View Code

 (当括号中为object时,说明这个类没有父类(到头了);当括号中为其他类别时,则括号中类别为父类,详见下例)

 

· __init__() 方法

__init__() 是一个特殊方法(special method)。Python有一些特殊方法。Python会特殊的对待它们。特殊方法的特点是名字前后有两个下划线。

如果你在类中定义了__init__() 这个方法,创建对象时,Python会自动调用这个方法。这个过程也叫初始化。

1 class happyBird(Bird):
2     def __init__(self,more_words):
3         print 'We are happy birds.',more_words
4 
5 summer = happyBird('Happy,Happy!')
View Code

这里继承了Bird类。屏幕上打印:We are happy birds.Happy,Happy!

我们看到,尽管我们只是创建了summer对象,但__init__() 方法被自动调用了。最后一行的语句(summer = happyBird...)先创建了对象,然后执行:summer.__init__(more_words),'Happy,Happy!' 被传递给了__init__() 的参数more_words


子类

· 介绍

类别本身还可以进一步细分成子类。在OOP中,我们通过继承(inheritance)来表达上述概念。使用子类可以提高程序的可重复使用性。

 

· 示例

 1 class Chicken(Bird):
 2     way_of_move = 'walk'
 3     possible_in_KFC = True
 4 
 5 class Oriole(Bird):
 6     way_of_move = 'fly'
 7     possible_in_KFC = False
 8 
 9 summer = Chicken()
10 print summer.have_feather
11 print summer.move(5,8)
View Code

 在类定义时,括号里为了Bird。这说明,Chicken是属于鸟类(Bird)的一个子类,即Chicken继承自Bird。自然而然,Bird就是Chicken的父类Chicken将享有Bird的所有属性。尽管我只声明了summer是鸡类,它通过继承享有了父类的属性(无论是变量属性have_feather还是方法属性move)

 

posted on 2016-11-17 11:09  HelloF  阅读(443)  评论(0编辑  收藏  举报

导航