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


猜你喜欢
- 1. mean() 函数定义:numpy.mean(a, axis=None, dtype=None, out=None, keepdims
- 发现问题今天在使用ImageTk.photoImage()显示图片时,当把包含该函数放在自定义函数里时,不能正常显示,移到函数为又可正常显示
- 今天展示一个利用pandas将json数据导入excel例子,主要利用的是pandas里的read_json函数将json数据转化为data
- 废话不多说了,直接上代码吧!import numpy as nparray = np.array([0, 0])for i in range
- 主要讲 except 和 not in 的性能上的区别。 CREATE TABLE tb1(ID int) CREATE TABLE tb2
- 最近拾回Django学习,实例练习中遇到了对多维字典类型数据的遍历操作问题,Google查询没有相关资料…毕竟是新手,到自己动手时发现并非想
- 在密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。GnuPG和PGP等很
- 因工作需要研究了支付宝即时到帐接口,并成功应用到网站上,把过程拿出来分享。即时到帐只是支付宝众多商家服务中的一个,表示客户付款,客户用支付宝
- 内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 12 - Drag and Drop using
- 01 创建不可见列创建不可见列:CREATE TABLE `t2` ( `id`&nbs
- 本文实例讲述了Python 文件管理的方法。分享给大家供大家参考,具体如下:一、Python中的文件管理文件管理是很多应用程序的基本功能和重
- 本文实例讲述了layer弹窗插件操作方法。分享给大家供大家参考,具体如下:1、首先去http://layer.layui.com/下载插件2
- 一、前言现在到了,第二步,上一步我们已经做好了发牌模块,有了手牌,就需要判断牌型了,平时打扑克时,我们需要使用大脑进行判断自己手里的牌属于那
- 无法打开用户默认数据库,登录失败,这也是SQL Server使用者熟悉的问题之一。在使用企业管理器、查询分析器、各类工具和应用软件的时候,只
- 当服务端对http的body进行解析到map[string]interface{}时,会出现cli传递的是int类型,而服务端只能断言成fl
- 1.创建图在tensorflow中,一个程序默认是建立一个图的,除了系统自动建立图以外,我们还可以手动建立图,并做一些其他的操作。下面我们使
- 一、Oracle分析函数简介:在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process)
- Golang连接Redis数据库golang连接数据库,这里博主推荐使用go-redis这个库,理由很简单(连接数据库的操作类似在数据库里面
- 项目需求,可以用复选框勾选项目进行提交,如下表<table class="layui-table" lay-dat