两者的主要区别

1.初始化参数为空的表述方式不同
2. 初始化附参数的表达方式不同,结构2的self.name一定要指向上面的参数
3. 实例化时的方法不同

def init(self)与def init(self.参数1、参数2······)在类中常常被作为初始化使用,对于代码的简化,对代码中多次出现的类进行参数设定,提高代码的可读性有很大帮助,两者主要存在三个区别。

1.初始化参数为空的表述方式不同

#def __init__(self)结构
class student:def __init__(self):self.name = Noneself.score = None#def __init__(self.参数1、参数2······)结构
class student:def __init__(self, name, score):self.name = nameself.score = score
  1. 初始化附参数的表达方式不同,结构2的self,name一定要指向上面的参数
#def __init__(self)结构
class student:def __init__(self):self.name = Aself.score = 18
#def __init__(self.参数1、参数2······)结构
class student:def __init__(self, name=A, score=18):self.name = nameself.score = score
  1. 实例化时的方法不同
    结构体1在实例化时需要先引用结构体,在结构体里进行参数更改
#def __init__(self)结构
class Student:def __init__(self):self.name = Noneself.score = Nonedef print_score(self):print("%s score is %s" % (self.name,self.score))if __name__ == '__main__':# 创建对象s1s1 = Student()s1.name = "b"s1.score = 20s1.print_score()print(s1.__dict__)#看属性

结构体2在实例化时需要先引用结构体,在引用体的括号里进行更改

#def __init__(self.参数1、参数2······)结构
class Student:def __init__(self,name,score):self.name = nameself.score = scoredef print_score(self):print("%s score is %s" % (self.name,self.score))if __name__ == '__main__':# 创建对象s1s1 = Student("b",20)s1.print_score()print(s1.__dict__)#看属性

总结

两种方式的使用方法上略微有区别,但功能上是一致的,习惯哪个用哪个就行。

详解Python中def __init__(self)与def __init__(self.参数1、参数2······)的区别相关推荐

  1. pythonnamedtuple定义类型_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  2. python操作符op_详解python中的 is 操作符

    大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解.原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详 ...

  3. python的装饰器迭代器与生成器_详解python中的生成器、迭代器、闭包、装饰器

    迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1|1可迭代对象 以直接作用于 for ...

  4. python namedtuple用法_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  5. python expandtabs_详解Python中expandtabs()方法的使用

    详解Python中expandtabs()方法的使用 expandtabs()方法返回制表符,即该字符串的一个副本. '\t'已经使用的空间,可选择使用给定的tabsize(默认8)扩展. 语法 以下 ...

  6. 详解Python中的封装

    文章目录 详解Python中的封装 基础入门 -> setter.getter 进阶使用 -> __ 私有属性 _ 强化加强 -> property 详解Python中的封装 面向对 ...

  7. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  8. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  9. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

  10. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...

    今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...

最新文章

  1. 最大医学影像平台将首个实现把医疗AI引入实际应用
  2. 客户旅程_我如何充分利用freeCodeCamp的旅程
  3. SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解
  4. 她拒绝麦肯锡 Offer,建立图片训练数据库,斯坦福 AI 实验室负责人 | 人物志
  5. ubuntu shortcuts
  6. 190628每日一句
  7. python实现t分布
  8. 彻底解决Python包下载慢问题
  9. Ubuntu ROS下Conda的最好安装方式
  10. java 电子栅栏,Java Exchanger栅栏
  11. 20190401每周精品之认知
  12. Either your server has no Maven installations defined, or the requested Maven version does not exist
  13. 大数据正当时,理解这几个术语很重要
  14. 日常开发中,你需要掌握的git使用报错解决
  15. 【Android】实现生成二维码、条形码和扫描二维码的功能
  16. 动规(11)-踩方格
  17. java窗体背景图片_java 窗体设置背景图片问题 (附上登陆界面代码,我想加个背景图...
  18. python day 07
  19. 教师妹学python之五:数据结构
  20. [书摘]金玉良缘(摘自:幽默大师林语堂 作者:朱艳丽)

热门文章

  1. 鸿蒙开发蓝牙耳机怎么连接手机,漫步者蓝牙耳机怎么配对?按照这个步骤操作即可...
  2. “问世间情为何物,直教生死相许"是写人间爱情吗?
  3. 基于SpringBoot的家政服务管理平台
  4. Python 实现L2范数的计算
  5. JAVA的OPENGL,JOGL入门例子(四)----富视觉的螺旋体
  6. Makefile中的双冒号规则
  7. Mybatis-plus开启或者关闭SQL日志打印
  8. [洛谷]P3353 在你窗外闪耀的星星 (#树状数组)
  9. 淘宝APP产品升级:首页聚焦转化和运营效率「买家秀」社区升级为 「逛逛」
  10. ios 开发百度地图的使用