python定义类带参数_类的定义、构造方法和参数传递

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

1. 类的定义

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

'''类文档'''

content

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

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

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

我们来定义一个类:class School:#这种方式我们就定义了一个名为School的类

'''定义一个学校类'''

pass

school = School()#通过这种方式来调用这个类

print(type(school))#通过输出看一下它的类型print(school)

输出结果为:

通过结果我们可以看到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),一定是等同于我们在调用的时候实际参数传递的个数。

Python中的__init__构造方法是一个特殊的方法,用于在创建对象后进行初始化操作。它在对象创建后自动调用,并接收对象自身作为第一个参数(self),以及其他传递给构造方法参数。 __init__方法通常在__new__方法创建对象后调用,用于设置对象的属性或执行其他初始化操作。它可以被子重写以实现自定义的初始化逻辑。 举例来说,假设有一个A,其中定义了__init__方法。当我们创建一个A的实例时,__init__方法会被自动调用,并对新创建的对象进行初始化操作。在__init__方法中,我们可以为对象的属性赋初值,或者执行其他必要的初始化操作。 例如,在给定的示例中,A和B都定义了__init__方法。当我们创建一个B的实例b时,首先会调用A的__new__方法创建对象,然后再调用A和B的__init__方法对对象进行初始化。在__init__方法中,我们可以根据传入的参数对实例的属性进行赋值。 另一方面,如果我们在A中注释掉__new__方法的返回语句,就不会创建对象,只会调用__init__方法。这样,当我们创建一个A的实例a时,只会执行__init__方法中的代码,而不会调用__new__方法。这说明__new__方法和__init__方法在构造方法的执行顺序上是有区别的。__new__方法是用来创建对象,而__init__方法是用来初始化对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python中__new__和__init__的区别](https://blog.csdn.net/weixin_40734030/article/details/122863308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值