python中的self和__init__()
2022/4/21 1:12:37
本文主要是介绍python中的self和__init__(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、self
直观理解:
如果不加self,表示是类的一个属性(可以通过"类名.变量名"的方式引用);加了self,表示类的实例的一个属性(可以通过"实例名.变量名"的方式引用)。如:
class Test(object): val = 100 def __init__(self): self.val = 200 test = Test() test.val #输出200 Test.val #输出100
也可以从以下多角度理解self:
1、self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以 ;
2、self在定义类的方法时必须位于第一个参数;
3、self总是指向调用时的类的实例;
4、self就是本身的意思,为了便于程序的,就得在类这个调用多个函数中,先申明自己是谁,到底是self,还是self. 所以必须有参数;
5、在调用时不必传入相应的参数;
二、__init__()
每次实例化一个类时,都会先调用__init__()方法,相当于介绍你定义了个什么东西。
用__init__()方法定义了类,那么每个实例化后的对象就拥有自己的属性,可直接在实例化的时候指定参数,使用类的方法时,也不需要再去重复传参;而如果没有__init__(),直接用类的方法定义属性,则属性就属于类的,不属于对象自己的。并且在使用方法时需要指定参数。
geerniya有个解释特别好:
1. 不用__init__()方法定义类
1 class Rectangle(): 2 def getPeri(self,a,b): 3 return (a + b)*2 4 def getArea(self,a,b): 5 return a*b 6 7 rect = Rectangle() 8 print(rect.getPeri(3,4)) 9 print(rect.getArea(3,4)) 10 print(rect.__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}
三、init(self,参数)和 __init__(self) 的区别
这里可参考 https://blog.csdn.net/weixin_40650484/article/details/97391376 最后部分。
这篇关于python中的self和__init__()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础
- 2024-09-2610 种方法写出更好的 Python 代码
- 2024-09-25Python编程基础详解
- 2024-09-25Python编程入门教程
- 2024-09-25从零开始使用Python构建LLaMA 3
- 2024-09-23Python中理解和使用树形结构的简单教程
- 2024-09-23Python 编程基础入门
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战