首页 > 其他分享 >类的定义、构造和参数传递

类的定义、构造和参数传递

时间:2022-10-31 17:46:56浏览次数:52  
标签:__ School 调用 定义 self 构造 参数传递 init 方法

1. 类的定义

类的定义使用的是class关键字,语法结构如下:

1 2 3 class Name:     '''类文档'''     content

Name为我们要创建的类的名字,注意我们在使用的时候尽量采用大写的方式,如果采用两个单词命名,两个单词的首字母都采用大写的方式。

类文档为我们写入的帮助我们理解这个类的信息。

content为类中的类体,包含变量、方法和属性等内容,如果我们在定义类的时候暂时不需要添入内容,可以采用pass语句充当一种占位语句。

我们来定义一个类:

1 2 3 4 5 class School:#这种方式我们就定义了一个名为School的类     '''定义一个学校类'''         pass school = School()#通过这种方式来调用这个类 print(type(school))#通过输出看一下它的类型print(school)

输出结果为:

1 2 <class '__main__.School'> <__main__.School object at 0x03372DD8>

通过结果我们可以看到school为一个类,通过第二行我们可以看出school是School类的实例。

2. __init__()方法

在创建类的时候,往往会创建一个__init__()方法,这种方法属于构造方法,也就是每次调用这个类都会使用这种方法,参数的传递也是在这个方法里。

这种方法中必须包含一个self参数,也必须是第一个参数,这个参数是指向这个实例本身的,它可以访问这个类中存在的属性和方法。

看下面的实例:

1 2 3 4 5 6 7 class School:#这种方式我们就定义了一个类,如果我们要调用这个类     '''定义一个学校类'''     def __init__(self):         print('这里是__init()__方法')     def __judge__(self):         print('判断这个方法是否被调用') school = School()

输出结果为:

1 这里是__init()__方法

通过输出我们可以看出只要调用了这个类就自动调用了这个__init__方法,而下面的__judge__方法是没有被调用的。

我们还可以通过循环的方式来验证一下是否每次调用这个类就会使用一次init方法:

看下面代码:

1 2 3 4 5 6 7 8 class School:     '''定义一个学校类'''     count = 0     def __init__(self):         School.count += 1         print('这里是__init()__方法的第%d次使用'%School.count) for in range(5):     School()

输出结果为:

1 2 3 4 5 这里是__init()__方法的第1次使用 这里是__init()__方法的第2次使用 这里是__init()__方法的第3次使用 这里是__init()__方法的第4次使用 这里是__init()__方法的第5次使用

我们可以通过输出结果看出我们使用5次init方法,当我们第一次调用这个类的时候,count为0,然后通过init方法进行加1操作,在init方法里的school.count每次进行加1,然后最外面的count是不变的,通过这个例子我们可以了解到init的使用法发。

3. 参数传递

我们在学习函数的时候,参数的传递是定义在函数名内的,而在类中,我们通过init方法可以更方便的进行参数的传递。

看下面的例子:

1 2 3 4 5 6 class GetAge:     def __init__(self,name,age):         self.name = name         self.age = age         print('%s的年龄为%d'%(name,age)) GetAge('小明',18)

输出结果为:

1 小明的年龄为18

我们需要注意,self是必不可少的,而且需要放在第一个,然后我们在调用这个类的时候,init方法中所包含的参数个数(不包含self),一定是等同于我们在调用的时候实际参数传递的个数。



标签:__,School,调用,定义,self,构造,参数传递,init,方法
From: https://www.cnblogs.com/bokeyuanjj/p/16845147.html

相关文章

  • 宜搭自定义表单中的表格,添加数据源变量
    在数据源处添加的变量是全局变量,可以作为中间值完成后台和前端的数据传递。具体:通过添加“远程变量”,获得后台数据赋值给全局变量用“:”,键和值的格式,表格组件添加数据源来......
  • 自定义镜像-centos7
    1、拉取centos7镜像dockerpullcentos:72、下载jdk安装包并上传服务器3、编写Dockerfile文件viDockerfileFROMcentos:7MAINTAINERsheyu<[email protected]......
  • fastadmin自定义button根据条件展示
    {field:'operate',title:__('Operate'),table:table,events:Table.api.events.operate,formatter:Table.api.formatter.operate,......
  • 2022.10.21----vscode-自定义事件
     vscode预览模式关闭,就能打开新标签页(43条消息)vscode新窗口打开文件-CSDN (43条消息)如何在vscode中打开新文件夹不覆盖上一个窗口标签_发呆的薇薇°的博客-......
  • 构造函数和原型
    一、构造函数和原型(一)概述1、在典型的OOP的语言中(如java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。2、在ES6之前,对象不是基......
  • C# 预定义类型“System.xxxxxxx”未定义或未导入的问题
    今天手贱,不知道更新了vs的啥东西,然后打开项目的时候,哦豁!项目一大堆爆红,报的都是"预定义类型System.xxxxx未定义或未导入"。有点慌,先稳住。首先,打开百度,搜索。。。然后,找......
  • 构造XSS脚本
    弹窗警告<script>alert('xss')</script><script>alert(document.cookie)</script>页面嵌套<iframesrc=http://www.baidu.comwidth=300height=300></iframe><iframesr......
  • 你还在为函数的一对多查找问题而烦恼吗?自定义函数轻松解决它
    Hello,大家好,经常有网友进行留言说,Excel的数据查找功能不是非常完善,比如我们的大众情人Vlookup函数他就不是万能的,对于一对多查找就无能无力了。因为这个函数一旦他查找到第......
  • 【XSY4371】star(构造)
    题意:给定值域在\([0,n-1]\)的序列\(a_1,\cdots,a_{m}\),要求构造值域在\([0,n-1]\)的序列\(b_1,\cdots,b_{m}\)和\(c_1,\cdots,c_{m}\),使得\(b_i\)两两不同、\(c......
  • 【XSY4182】下一个(next)(欧拉回路,构造)
    题面下一个(next)题解我们可以这么转化问题:给每一条边定向,使得每一个点的出度至少为\(2\)。证明新问题是原问题的充分条件:定好向后,我们先给每个点随便选一条出边,显然这......