首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PYTHON __init__()方

因为方法实例在任何方法调用总是 作为第一个参数传递,self 被选中用来代表实例。你必须在方法声明中放上self(你可能已经注 意到了这点),但可以在方法不使用实例(self)。...__init__: 在Python ,__init__()实际上不是一个构造器。你没有调用“new”来创建一个新对象。(Python 根本就没有“new”关键字)。...取而代之,Python 创建实例后,在实例化过程,调用__init__()方法,当一个类被实例化时,就可以定义额外行为,比如,设定初始值或者运行一些初步诊断代码 ———主要是在实例被创建后,实例化调用返回这个实例之前...你可以认为实例化是对__init__()一种隐式调用,因为传给Sample()参数完全与__init__()接收到参数是一样(除了self,它是自动传递)。...调用类时,传进任何参数都交给了__init__()。实际,你可以想 像成这样:把创建实例调用当成是对构造器调用。

51410

python __init__.py 作用

实验一:不包含__init__.py test文件夹包含文件如下:  此时如果在B/run.py运行以下语句结果为: 语句 运行结果 import A ImportError: No...实验二:A包含__init__.py A文件夹下包含__init__.py,test文件夹结构变为如下:  在B/run.py运行以下语句结果依次列在表: 语句 运行结果 import...实验三:A.A_A也包含__init__.py A文件夹及其子文件夹下都包含__init__.py,test文件夹结构变为如下:  在B/run.py运行以下语句结果依次为: 语句 运行结果...进阶 在上述实验,发现导入A时并未将其下子模块自动导入,当__init__.py文件不为空时,其中可以填写from . import A_A类似语句实现自动子模块导入。...不含有__init__.py包也可以当作命名空间包使用,使命名一致包被统一管理。

17230
您找到你想要的搜索结果了吗?
是的
没有找到

Python类__init__()作用

最开始学习python,认为定义类时__init__方法作用等同于C构造函数,但是使用之后发现也有区别。...__init__(a,"wang")即__init__作用是初始化实例后对象b在子类不重写__init__方法时,子类会默认调用父类__init__方法子类也可以重写__init__方法,来给子类定义专属属性当然...,上面写是比较官方解释用简单的话来讲,可以理解为,类属性如果直接写在类里面一般是要有值。...例如:class fun() a = 3这样情况下,类属性无法变成变量,当将类属性以self.a方式定义到初始化方法,那属性也可以当成变量例如:class fun(): def _..._init__(self, a): self.a = af = fun(3)print(f.a)Output:--3--

2.4K10

Python __init__通俗解释

前言 作为典型面向对象语言,Python定义和使用是不可或缺一部分知识。对于有面向对象经验、对类和实例概念已经足够清晰的人,学习Python这套定义规则不过是语法迁移。...这时,Student定义将变成(我们先用一段注释占着__init__函数内位置)。 ?...定义__init__后,执行实例化过程须变成Student(arg1, arg2, arg3),新建实例本身,连带其中参数,会一并传给__init__函数自动并执行它。...从第二参数开始均可设置变长参数、默认值等,相应地将允许实例化过程Student()灵活地传入需要数量参数; 其他…… 说到最后,__init__还是有个特殊之处,那就是它不允许有返回值。...如果你__init__过于复杂有可能要提前结束的话,使用单独return就好,不要带返回值。

90520

git init 和 git init –bare 区别

使用命令"git init --bare"(bare汉语意思是:裸,裸)初始化版本库(暂且称为bare repository)只会生成一类文件:用于记录版本库历史记录.git目录下面的文件;而不会包含实际项目源文件拷贝....git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库根目录下面 1.不使用--bare git init joshuatest.git...2.使用--bare git init --bare joshuatest2.git ? 用"git init"初始化版本库用户也可以在该目录下执行所有git方面的操作。...另一个用户想把自己在本地仓库(就称为本地仓库)master分支更新提交到远端仓库master分支,他就想当然敲了 git push origin master:master 于是乎出现 因为远端仓库用户正在...但如果是往远端仓库中空闲分支上提交还是可以,比如 git push origin master:test   还是可以成功 解决办法就是使用”git init –bare”方法创建一个所谓裸仓库

2K80

Python __init__通俗解释是什么?

可能大家常常会在面向对象编程中看到__init__,而且几乎每个类中都会有,它作用都是是什么呢? 要想明白__init__,你首先要弄清楚面向对象是什么?...def __init__(self,...): 代码块 每次创建类实例对象时,__init__函数就会自动被调用,无论它里面有什么样变量、计算,统统会自动调用。...理解__init__函数需要搞清楚以下三点: ❝1、带有两个下划线开头函数是声明该属性为私有,不能在类地外部被使用或直接访问 2、init函数(方法)支持带参数初始化 ,也可为声明该类属性 3...、init函数(方法)第一个参数必须是 self(self为习惯用法,也可以用别的名字),后续参数则可 以自由指定,和定义函数没有任何区别。...所以综上,构造方法__init__用于创建实例对象时使用,每当创建一个类实例对象时,Python 解释器都会自动调用它,用来初始化对象某些属性。

58030

在__init__设置对象父类

1、问题背景在Python,可以为对象设置一个父类,从而实现继承。但是,如果想要在实例化对象时动态地指定父类,则会出现问题。...(parent=Blue)blue_square = Square(parent=Blue)但是,这段代码会报错,因为在Python,对象父类只能在类定义时指定,不能在实例化对象时动态设置。...在类工厂,可以根据传入参数来决定创建哪个类。...如果parent是Blue,则创建两个类,Circle和Square,它们父类都是Blue。最后,它返回创建类。这样,我们就可以在实例化对象时动态地指定对象父类了。第二个解决方案是使用依赖注入。...依赖注入是一种设计模式,它可以将对象依赖关系从对象本身解耦出来。这样,就可以在实例化对象时动态地注入它依赖关系。

6810

python包__init__.py文件作用

__init__.py文件最常用作用是标识一个文件夹是一个 python包。 __init__.py文件另一个作用是定义模糊导入时要导入内容。...当我们使用类似 from package import * 导入语句时候就是在使用模糊导入了,这时包编写者就可以在__init__.py文件定义 __all__ 来限制模糊导入内容。...__init__.py还可以简化导入过程,比如: Django models文件有时会有很多个表,并且每个表都有很多属性和方法,这样就会使得 models文件变得很臃肿。...这时我们就可以在 models里 __init__.py文件中导入 User类,这样我们就可以使用原来写法来导入User类了。 # models....__init__.py from .User import User

1.6K10

Python类super()和__init__()关系

Python类super()和__init__()关系1.单继承时super()和__init__()实现功能是类似的class Base(object): def __init__(self...--------------------------------super和父类没有关联,因此执行顺序是A —> B—>—>Base  执行过程相当于:初始化childC()时,先会去调用childA构造方法...__init__(), super(childA, self)返回当前类继承顺序childA后一个类childB;然后再执行childB().__init()__,这样顺序执行下去。  ...在多重继承里,如果把childA() super(childA, self).__init__() 换成Base....,如果是本身就会依次继承下一个类;如果是继承链里之前类便会无限递归下去;如果是继承链里之后类便会忽略继承链汇总本身和传入类之间类;比如将childA()super改为:super(childC

66410

python类super()和__init__()区别

main__.Base'>, ) supder和父类没有关联,因此执行顺序是A —> B—>—>Base 执行过程相当于:初始化childC()时,先会去调用childA构造方法..._init_(), super(childA, self)返回当前类继承顺序childA后一个类childB;然后再执行childB()._init()_,这样顺序执行下去。...在多重继承里,如果把childA() super(childA, self)._init_() 换成Base....childA'>, , , ) 从super()方法可以看出,super()第一个参数可以是继承链任意一个类名字..., 如果是本身就会依次继承下一个类; 如果是继承链里之前类便会无限递归下去; 如果是继承链里之后类便会忽略继承链汇总本身和传入类之间类; 比如将childA()super改为:super(childC

92060

Python__init__作用是什么

看到Python中有个函数名比较奇特,__init__我知道加下划线函数会自动运行,但是不知道它存在具体意义.....self.width * self.height * self.depth b = Box() b.setDimension(10, 20, 30) print(b.getVolume()) 我们在Box类定义了...setDimension方法去设定该Box属性,这样过于繁琐,而用__init__()这个特殊方法就可以方便地自己对类属性进行定义,__init__()方法又被称为构造器(constructor)...__init__()方法:初始化创建好对象,初始化指的是:”给实例属性赋值” 6.__new__()方法:用于创建对象,但我们一般无需定义该方法。...以上就是Python__init__作用是什么详细内容,更多关于Python__init__到底是干什么资料请关注ZaLou.Cn其它相关文章!

96430

Python__init__()方法整理(两种解释)

在我们接触__init__()方法之前,无论如何,我们都需要粗略、简单地看看在Python隐含object类层次结构。...在超类实现init() 我们通过实现__init__()方法来初始化对象。当一个对象被创建,Python首先创建一个空对象,然后为那个新对象调用__init__()方法。...在超类实现__init__() 我们通过实现__init__()方法来初始化对象。当一个对象被创建,Python首先创建一个空对象并为该新对象调用__init__()方法。...这并没有实质性改变__init__()在Card类层次结构运作方式。然而,它确实改变了我们应用程序创建对象方式。...然而,缺乏一个真正共用初始化,会导致一些冗余。缺点在于重复初始化suit,所以必须将其抽象到超类。各子类__init__()会对超类__init__()做显式引用。

6.4K50

Python__init__()方法整理(两种解释)

在我们接触__init__()方法之前,无论如何,我们都需要粗略、简单地看看在Python隐含object类层次结构。...在超类实现init() 我们通过实现__init__()方法来初始化对象。当一个对象被创建,Python首先创建一个空对象,然后为那个新对象调用__init__()方法。...在超类实现__init__() 我们通过实现__init__()方法来初始化对象。当一个对象被创建,Python首先创建一个空对象并为该新对象调用__init__()方法。...这并没有实质性改变__init__()在Card类层次结构运作方式。然而,它确实改变了我们应用程序创建对象方式。...然而,缺乏一个真正共用初始化,会导致一些冗余。缺点在于重复初始化suit,所以必须将其抽象到超类。各子类__init__()会对超类__init__()做显式引用。

2.7K60

神奇init函数

init函数特性 先简单介绍一下init函数基本特性: init函数先于main函数自动执行 每个包可以有多个init函数,每个包源文件也可以有多个init函数 init函数没有输入参数、返回值...前面说有点乱,对init函数加载顺序做一个小结: 从当前包开始,如果当前包包含多个依赖包,则先初始化依赖包,层层递归初始化各个包,在每一个包,按照源文件字典序从前往后执行,每一个源文件,优先初始化常量...init函数使用场景 还记得我之前这篇文章吗:go解锁设计模式之单例模式,借用init函数加载机制我们可以实现单例模式饿汉模式,具体怎么实现可以参考这篇文章,这里就不在写一遍了。...,可读性也会下降 在init函数也可以启动goroutine,也就是在初始化同时启动新goroutine,这并不会影响初始化顺序 init函数不应该依赖任何在main函数里创建变量,因为init...函数执行是在main函数之前 init函数在代码不能被显示调用,不能被引用(赋值给函数变量),否则会出现编译错误。

47220

详解Python__init__和__new__区别

使用Python写过面向对象代码同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例时候。例如: ? 这样便是__init__最普通用法了。...__new__方法接受参数虽然也是和__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例方法。 ? 执行结果: ?...然后利用这个实例来调用类__init__方法,上一步里面__new__产生实例也就是 __init__里面的 self 所以,__init__ 和 __new__ 最主要区别在于: 1....其实我最早接触__new__时候,就是因为需要自定义 metaclass,但鉴于篇幅原因,我们下次再来讲pythonmetaclass和__new__关系。...四、用__new__来实现单例 事实上,当我们理解了__new__方法后,我们还可以利用它来做一些其他有趣事情,比如实现 设计模式 单例模式(singleton) 。

1.5K10
领券