Dotcpp  >  编程教程  >  Python面向对象编程  >  Python类的定义和构造方法及参数传递

Python类的定义和构造方法及参数传递

点击打开在线编译器,边学边练

我们在前面学习的数据类型都是类,我们可以在类中使用很多方法。

1. 类的定义

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

class Name:
    '''类文档'''
    content

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

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

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

我们来定义一个类:

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

输出结果为:

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

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

2. __init__()方法

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

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

看下面的实例:

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

输出结果为:

这里是__init()__方法

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

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

看下面代码:

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

输出结果为:

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

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

3. 参数传递

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

看下面的例子:

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

输出结果为:

小明的年龄为18

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



知识点标签:类和对象


本文固定URL:https://www.dotcpp.com/course/265

上一课:

Python面向对象编程

下一课:

Python类方法

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)