Python笔记 class中的 您所在的位置:网站首页 python包中的__init__里面的变量怎么访问 Python笔记 class中的

Python笔记 class中的

#Python笔记 class中的| 来源: 网络整理| 查看: 265

Python中的init的含义

之前一直不理解__init__()方法的作用核意义,今天看了一些别人写的博客,对这个内容学习了一下。

init()方法有两个方面的重大意义:1. 在对象生命周期中初始化;每个对象必须正确初始化后才能正常工作。2. init()参数值可以有多种形式。

__init__有点像C#中的构造函数,在类实例创建后立即调用。

class Student: def __init__(self,number): self.number=number def student_number(self): print('number:',self.number) student=Student(34) student.student_number()

在这里,我们把__init__方法定义为有一个参数number和self,它创建一个新域number,self为指向类本身。这个过程中,通过self.number=number将数据封装在类中,调用时直接时直接通过类Student进行调用。

那么,如果不用__init__()方法定义类会怎么样呢? geerniya在他的博客对这块内容作了如下解释:

不用__init__()方法定义类 class Student: def student_info(self,name,number): print('name: {}, number: {}'.format(name,number)) student=Student() student.student_info('zhang',34) print(student.__dict__)

输出结果为

name: zhang, number: 34 {}

虽然不用__init__()方法也能正常实现要求,但查看这个实例的属性竟然是空的。在实例化对象的时候,student=Student()的参数是空的,只有在调用函数的时候才指定,并且类中定义的方法都有参数,明显不是很便捷。

用__init__()方法定义类 class Student: def __init__(self,name,number): self.name=name self.number=number def student_info(self): print('name: {}, number: {}'.format(self.name,self.number)) student=Student('zhang',34) student.student_info() print(student.__dict__)

输出

name: zhang, number: 34 {‘name’: ‘zhang’, ‘number’: 34}

定义完后,每个实例都有自己的属性(name,number),可以直接调用类中的函数。

init(self,参数)和__init__(self)区别 定义 两种类型的init定义方式如下 class Person: # def __init__(self): # self.name=None # self.gender=None # self.age=None def __init__(self,name,gender,age): self.name=name self.gender=gender self.age=age def print_info(self): if str.lower(self.gender)=='female': print('Her name is {}, she is {} years old'.format(self.name,self.age)) elif str.lower(self.gender)=='male': print('His name is {}, he is {} years old'.format(self.name,self.age)) else: print('ERROR')

前者__init__()方法中只有self,但在方法的类部包含三个属性。而后者在定义方法的时候,直接给定两个参数。 2. 实例化 两者的实例化方法如下:

#person=Person() #person.name='lisa' #person.gender='female' #person.age=18 #person.print_info() person2=Person('lisi','male',20) person2.print_info()

两者的主要区别: 前者定义类可以是一个空结构,当有输入进来的时候再添加相应的数据 后者则必须传值,不予许为空值,例如

person2=Person() person2.print_info()

输出将会报错

TypeError: init() missing 3 required positional arguments: ‘name’, ‘gender’, and ‘age’

相关博客和学习网站

[1] 廖雪峰官网https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408 [2]详细解读Python中的__init__()方法https://www.cnblogs.com/insane-Mr-Li/p/9758776.html [3] python学习——类中为什么要定义__init__()方法.https://blog.csdn.net/geerniya/article/details/77487941 [4]python def init(self, name等多参数), def init(self)https://blog.csdn.net/m0_37693335/article/details/82972925



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有