在python中,对象是由类class定义的
thing | ||
buhuodong | huodong | |
jiaju | dongwu | |
zhuozi | burudongwu | |
changjinglu |
class thing:
pass
8.1定义一个最大的类thing
pass表示没有别的信息了,一般新定义函数或类时使用。
定义子类 buhuodong,huodong它们都是thing的子类。,thing是它们的父类
class thing:
pass
class buhuodong(thing):
pass
class huodong(thing):
pass
家具是属于不活动类buhuodong的子类,
桌子是属于家具的子类,定义所有表格中出现的类
class thing:
pass
class buhuodong(thing):
pass
class huodong(thing):
pass
class jiaju(buhuodong):
pass
class zhuozi(jiaju):
pass
class dongwu(huodong):
pass
class burudongwu(dongwu):
pass
class changjinglu(burudongwu):
pass
因为只是定义没有详细信息,所以不需要写具体内容,否则定义类完整的格式是
class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
8.2增加属于类的对象
长颈鹿有cjl_1,cjl_2两个对象。object
cjl_1 = changjinglu()
cjl_2 = changjinglu()
这两行代码,告诉python,创建一个属于长颈鹿类的对象,并把它赋值给
cjl_1,cjl_2。
8.3 定义类中的函数
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
在class中添加它的函数
class thing:
def this_is_a_function_about_thing():
print('thing is something we can feel!')
def function2():
print('thing is something we can see it!')
比如在thing这个类中添加两个函数,this_is_a_function_about_thing()和function2()。
8.4用函数来 表示类的特征
动物 | 呼吸 |
移动 | |
吃食物 | |
哺乳动物 | 幼崽吃奶 |
长颈鹿 | 吃树叶 |
class dongwu(huodong):
def breathe(self):
pass
def move(self):
pass
def eat_food(self):
pass
仍然是先不写具体内容,先加一个空壳子
self参数是用来从类中的一个函数调用类中,(包括父类中)的另一个函数的
接着在定义哺乳动物和长颈鹿的特征,同样用函数。
class burudongwu(dongwu):
def feed_young_milk(self):
pass
class changjinglu(burudongwu):
def eat_high(self):
pass
8.5为什么使用类和对象
因为之前定义的对象,两个长颈鹿,可以通过. 调用它的类长颈鹿,和父类,哺乳动物,动物,活动的,他们的函数。
只需要使用运算符.和函数的名字来调用对象的函数。
cjl_1 = changjinglu()
cjl_2 = changjinglu()
cjl_2.move
cjl_1.eat_high
cjl_1.eat_food
其中,move,eat_food,是动物的属性,
eat_high是长颈鹿的属性,
class dongwu(huodong):
def breathe(self):
print('breathing')
def move(self):
print('moving')
def eat_food(self):
print('eating food')
class burudongwu(dongwu):
def feed_young_milk(self):
print('feed_young_milk')
class changjinglu(burudongwu):
def eat_high(self):
print('eat_high')
这样用最简单的方式来 表面函数的动作,加print
所有程序如下,
class thing:
def this_is_a_function_about_thing():
print('thing is something we can feel!')
def function2():
print('thing is something we can see it!')
class buhuodong(thing):
pass
class huodong(thing):
pass
class jiaju(buhuodong):
pass
class zhuozi(jiaju):
pass
class dongwu(huodong):
def breathe(self):
print('breathing')
def move(self):
print('moving')
def eat_food(self):
print('eating food')
class burudongwu(dongwu):
def feed_young_milk(self):
print('feed_young_milk')
class changjinglu(burudongwu):
def eat_high(self):
print('eat_high')
cjl_1 = changjinglu()
cjl_2 = changjinglu()
cjl_2.move()
cjl_1.eat_high()
cjl_1.eat_food()
执行结果
===================== RESTART: C:/Python27/lianxi/23.py =====================
moving
eat_high
eating food