Python面向对象中类(class)的简单理解与用法分析
作者:授我以驴 发布时间:2021-01-05 00:07:37
本文实例讲述了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()
输出结果为:
鱼类都有鳃。但不会得腮腺炎。
我们也可以在子类中调用父类的函数
xiaoli.weight(100)
输出结果为:
鱼类都有鳃。但不会得腮腺炎。
鱼的重量:100
总结:
我们首先创建了一个基础类Fish(鱼)类(class),然后我们需要进行实例化(instance)出一个对象(object),我们实例化对象的名字叫做xiaoming(小明),就像我在菜市场买了一条鱼,我必须通过买这个动作(实例化),买了之后才拥有了一条鱼,一条属于我的“鱼”:xiaoming。然后我能用xiaoming这条鱼来煲汤(函数),做菜或者看他在水里游,这些动作就像调用类里面的函数一样,只有买来了鱼才能做这些动作,为了做这些动作还需要加入葱姜蒜这些佐料(参数)。
而我们创建了子类caoyu(草鱼),草鱼也是鱼的一种,所以它也有父类Fish()的一些基本的属性,有鳃,可以在水里自由呼吸,同时也可以拿来煲汤,(这就继承了鱼的普遍属性)但它也有自己的特点,它可能做水煮鱼片比做酸菜鱼好吃,这是与其他鱼区别的地方。
class Fish(): 创建一个基本类 Fish
class caoyu(Fish): 创建一个类caoyu,它是类Fish()的子类
class Fish(): def init(self): 定义一个方法__init__,作用是对类class 进行初始化,比如给鱼基本属性:能在水中呼吸。
class Fish(): def weight(self, J):Fish()类下定义一个weight函数,接收self和J作为参数,用于说明鱼的重量
xiaoming = Fish(): 将xiaoming设置为类Fish()的一个实例
xiaoming.weight(J): 从xiaoming对象中找到函数weight,并用self和J参数调用它,self由Python自动填入,所以调用时只传入参数J
以上只是个人粗浅的理解,面向对象是个很深的东西,还需多多练习,慢慢消化理解!
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/one_Salted_FishGG/article/details/89554747
猜你喜欢
- 本文介绍了关于redux-saga中take使用方法详解,分享给大家,具体如下:带来一个自己研究好久的API使用方法.redux-saga中
- Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就
- 1.在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢?2.如果我们想要裁剪图像中任意
- 利用线程生成缩略图;读取当前路径下的png文件,在当前路径下生成6464,128128和32*32的缩略图。""&quo
- 此文译自Fred Wilson 2010年2月在迈阿密举行的Web未来应用的年会上的演讲谢谢青云推荐了这篇这么好的演说谢谢卓和百忙中抽空帮我
- 我使用“ Web 2.0设计”来形容目前占主导优势的网页设计风格, 很多人用这个词来形容:网络经济的复苏网站和用户之间更高水平的交互或一种社
- 目前代码应该没什么bug了,兼容IE6.0 & FF 1.5, 通过xHTML 的Transitional验证和 CSS 验证。为了
- 短几年,Google 的 Logo 已经象 Nike 的挑勾和 NBC 的孔雀图案一样著名了。Ruth Kedar,Google
- 本文实例讲述了Python多进程分块读取超大文件的方法。分享给大家供大家参考,具体如下:读取超大的文本文件,使用多进程分块读取,将每一块单独
- 安装库位置和显示方式简单总结:一、位置的不同 1.自带库在环境的 lib\\os.py&nb
- 本文为大家分享了python实现图书馆研习室自动预约的具体代码,供大家参考,具体内容如下简介现在好多学校为学生提供了非常良好的学习环境,通常
- 这方面我还是一个freshman,不过看了一些文章,经过一些实践后也算是有了一些想法。希望如果有这方面的前辈路过的话,能不吝指教。首先,作为
- 在JavaScript中,我们应该尽可能的用局部变量来代替全局变量,这句话所有人都知道,可是这句话是谁先说的?为什么要这么做?有什么根据么?
- 能评估使用方法性能评估模块提供了一系列用于模型性能评估的函数,这些函数在模型编译时由metrics关键字设置性能评估函数类似与目标函数, 只
- 本文实例讲述了Python面向对象之私有属性和私有方法。分享给大家供大家参考,具体如下:01. 应用场景及定义方式应用场景在实际开发中,对象
- 一、输出指令ASP的输出指令<% =expression %>显示表达式的值。这个输出指令等同于使用Resp
- 大家可能都不大熟悉关于pdb这个模块,实际上就是python中的内置模块,主要作用于命令行调试代码,下面我们将通过是哪个小结给大家详细介绍下
- 写入Excel中后有显示第一列客户款号总库存这些,开始写在第12行第一列开始写入,一行写入5个,然后再隔12行,再写入下边的数据,图片需要对
- SQLSRV驱动程序允许您创建一个结果集,其中包含可以根据游标类型以任何顺序访问的行。本主题将讨论客户端(缓冲)和服务器端(非缓冲)游标及其
- 一、使用步骤 1.引入库(安装Python环境、PyQt、PyQt-tools)from PyQt5 import QtCore,