本文实例讲述了Python面向对象中类(class)的简单理解与用法。,具体如下:
我们先来创建一个简单的类
class Fish(object):
pass
xiaoming = Fish()
一个基础类(base class) Fish(鱼)类就创建好了。class Fish(object)等同于class Fish()
caoyu = Fish() 语句创建了一个对象:xiaoming(小明)。变量名 = 类名+() 实例化 类
下面对Fish类进行扩充
class Fish():
def weight(self,weight):
print("鱼的重量:{}".format(weight))
xiaoming = Fish()
xiaoming.weight(100)
运行结果:
鱼的重量:100
关于self:
self代表类(class)的实例(instance)
self可以用其他词汇代替,name,you等,这只不过是约定俗成的
self必须定义,但不需要手动传值
我们在这个类里面定义了一个函数weight(),函数有两个参数self和weight,self我们只需要在创建函数时定义即可,传值调用时不用管。
当我们想给这个Fish类预设一些属性,初始化创建的实例化对象时,就可以定义一个__init__方法,在创建对象时自动进行初始化,
__init__前面是两个下划线
class Fish():
def __init__(self):
print("鱼都生活在水里。")
def weight(self,weight):
print("鱼的重量:{}".format(weight))
xiaoming = Fish()
#xiaoming.weight(100)
注释掉caoyu.weight(100)得到结果为:
鱼都生活在水里。
上面的代码定义了一个__init__方法,在caoyu这个对象建立的时候自动运行这个方法,打印输出了“鱼都生活在水里。”
创建了Fish() 鱼 类,突然觉得这个类包括的鱼太多了,那我们再来一个细分,即从Fish() 这个父类的基础之上,创建一个子类。子类继承了父类的一些属性,比如鱼都生活在水里,但又具有自己独有的特征,即属性。我们通过 class caoyu(Fish)定义了Fish父类下的caoyu(草鱼)子类。
class x(y)创建一个x类是y类的子类,就是创建子类的一般方法
class Fish():
def __init__(self):
print("鱼都生活在水里。")
def weight(self,weight):
print("鱼的重量:{}".format(weight))
class caoyu(Fish):
pass
xiaoli = caoyu()
输出结果:
鱼都生活在水里。
从上面的代码可以看到,class caoyu(Fish)这个类是Fish的子类,子类会继承父类的属性。我们实例化caoyu类后,就输出了“鱼生活在水里”,继承自父类Fish()的__init__方法。我们也可以重新定义子类的__init__方法,父类的__init__方法就会失效,就像下面这样:
class Fish():
def __init__(self):
print("鱼都生活在水里。")
def weight(self,weight):
print("鱼的重量:{}".format(weight))
class caoyu(Fish):
def __init__(self):
print("鱼类都有鳃。但不会得腮腺炎。")
xiaoli = caoyu()