美文网首页
【扫盲】18.关于Python中为什么要有init()函数?

【扫盲】18.关于Python中为什么要有init()函数?

作者: Queenie的学习笔记 | 来源:发表于2019-09-17 12:10 被阅读0次

前言

对于一个Python初学者,关于Python中为什么要有init()函数这个问题甚是纠结,不明白这个函数的意义。技术的学习过程中,一旦有某个知识点吃不透,接下来的学习都是困难重重,好在网上资源丰富,只要能想到如何描述你的问题,一般都可以找到一些有助于理解的蛛丝马迹。建议初学者将代码复制粘贴放到自己电脑下的Python运行环境下去执行,观察两段代码的运行结果的区别。

示例来源: https://www.cnblogs.com/baxianhua/p/9996676.html,感谢作者

本示例用于演示Python中【不用init()方法定义类】代码运行结果会有何不同

  1. 两段代码的功能都是【打印出矩形的周长和面积、dict中的内容】
  2. 两段代码不同点在于:
    代码一没有打印出dict的属性;
    代码二实现了dict属性的输出
  3. 结论:
    ① 通过print(rect.dict)来看实例的属性,代码一的结果是空的,按理来说它的属性应该是它的长、宽。但是它竟然没有,这就是没有定义init()的原因了;
    ② 在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了,且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了;
    ③ 因此,需要在类中定义init()方法,方便创建实例的时候,需要给实例绑定上属性,也方便类中的方法(函数)的定义;
    ④ 定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。

代码一

print('代码一的运行结果:')
class Rectangle():
    def getPeri(self,a,b):
        return (a + b)*2
    def getArea(self,a,b):
        return a*b 
rect = Rectangle()

print(rect.getPeri(3,4))
print(rect.getArea(3,4))
print(rect.__dict__)
print('\n')

代码二

print('代码二的运行结果:')
class Rectangle():
    def __init__(self,a,b):
        self.a = a
        self.b = b

    def getPeri(self):
        return (self.a + self.b)*2

    def getArea(self):
        return self.a*self.b
 
rect = Rectangle(3,4)
print(rect.getPeri())
print(rect.getArea())
print(rect.__dict__)
print('\n')

注:以下文章说的更加细致,适用于初学者有一定基础后再去反复理解文中的概念及思想。

https://blog.csdn.net/Goldxwang/article/details/84475773

相关文章

  • Python3的参数化:关于 self 参数的详细解释(重温 i

    之前记录过一篇《【扫盲】18.关于Python中为什么要有init()函数?》,当时其实并没有完全理解 init ...

  • 【扫盲】18.关于Python中为什么要有init()函数?

    前言 对于一个Python初学者,关于Python中为什么要有init()函数这个问题甚是纠结,不明白这个函数的意...

  • python-构造函数

    Python中的构造函数是__init__函数。在Python中,子类如果定义了构造函数,而没有调用父类的,那么P...

  • Dataquest笔记

    python中级 class 其中,init要加双下划线,所有成员函数要有self参数。 try...except...

  • Python 继承之构造函数的说明及 super() 函数详解

    Python 继承之构造函数的说明 在 Python 中,如果子类不重写 __init__,实例化子类时,就会自动...

  • python中__init__函数(方法)

    两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问 __init__函数(方法)支持带参数类的初始...

  • 模块

    python中简单的说,文件就是模块(Module);按目录组织模块,就是包(Package);包中需要有init...

  • init()函数 先导入的包的init函数先执行 init()函数和main()函数 这两个函数都是go中的保留函...

  • Python 类的解释

    一种对python类的经典解释 python 中init()是一种特殊的方法,不像C++中的构造函数,它并不创建实...

  • python函数的创建和参数问题

    python——函数 一,函数的创建与调用 ​ 开展之前,先说一下为什么要有函数存在: ​ 假如每当我们实...

网友评论

      本文标题:【扫盲】18.关于Python中为什么要有init()函数?

      本文链接:https://www.haomeiwen.com/subject/vfsnectx.html