class Person(object):
def __init__(self,aaa):
self.aaa = aaa
class Father(Person):
def __init__(self, name,aaa):
Person.__init__(self,aaa)
self.name = name
class Mother(Person):
def __init__(self, aaa,age):
Person.__init__(self, aaa)
self.age = age
class Son(Father, Mother):
def __init__(self, gender, name, age,aaa):
Father.__init__(self, name,aaa)
Mother.__init__(self, aaa,age)
self.gender = gender
son = Son('male', 'John', 25,"ccc")
我看了黑马视频 那家伙说如果如果所有类继承了object 那么会执行无数次
我觉得一次都不会执行,因为子类继承了父类,如果子类没重写init方法那么会继承父类的 所以会执行父类init方法,但是代码中子类重写了init 方法,不会自动执行父类的了,一次都不会,除非父类名.__init__()显式调用,不知道对不对
答案:在这个例子中,Person
类的 __init__
方法会被调用两次。
解释:
在 Python 中,当你创建一个类的实例时,如果该类定义了 __init__
方法,那么这个方法会在实例被创建时自动调用。在你的代码中,Son
类继承自 Father
和 Mother
,并且 Father
和 Mother
都继承自 Person
。重要的是要注意,尽管 Son
类没有直接继承自 Person
,但它通过多重继承间接地继承了 Person
。
在 Son
类的 __init__
方法中,你显式地调用了 Father
和 Mother
的 __init__
方法。由于 Father
和 Mother
都调用了 Person
的 __init__
方法(通过 Person.__init__(self, aaa)
),因此 Person
的 __init__
方法会被调用两次:一次是通过 Father
的 __init__
方法,另一次是通过 Mother
的 __init__
方法。
你提到的“如果子类没重写init方法那么会继承父类的init方法”是正确的,但在这种情况下,子类确实重写了 __init__
方法,并在其内部通过显式调用父类的 __init__
方法来确保父类的初始化逻辑被执行。
因此,Person
类的 __init__
方法在这个例子中会被调用两次。如果你不想这样,你可能需要重新考虑你的类设计和继承结构,或者通过其他方式(如使用组合而非继承)来避免这种情况。
本文向大家介绍java对象初始化代码详解,包括了java对象初始化代码详解的使用技巧和注意事项,需要的朋友参考一下 本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及final关键字对初始化的影响。另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初始化 这里首先介绍下创建对象的过程: 类型为Dog的一个对象首次创建时,或者Dog类的s
问题内容: 当涉及到String时,对于对象的情况我有点困惑,因此想知道以下代码将创建多少个对象,并针对String池和堆对String对象的创建进行了一些解释。 问题答案: 将创建4个对象。 两个注意事项: 总是创建一个新对象。字符串文字只能为所有情况创建一个对象。最佳实践是永远不要使用-实例化是多余的。 两个字符串的连接转换为,因此在此处创建了另一个对象。
windows操作系统下无法在一个php文件里初始化多个Worker, 例如下面test.php <?php ... $socket_server = new Worker("tcp://0.0.0.0:5555"); $socket_server->on.... $websocket_server = new Worker("websocket://0.0.0.0:6666"); $websoc
系统初始化(init) [KNL] init=文件全路径 指定内核挂载根文件系统后运行的第一个用户空间程序的绝对路径。默认为"/sbin/init"。 [KNL] rdinit=全路径 设置从initramfs中运行的第一个用户空间程序的绝对路径,默认为"/init"。 [注意]一旦使用了initramfs并且成功的运行了其中的"/init",所有"init"以及与根文件系统相关的选项(包括"nf
没有安装 San-CLI 需要安装 npm i -g san-cli 快速创建 san init <app-name> 创建的是 san 项目。 app-name 是要创建的工程项目目录,可以为.(即在当前目录下创建)。 指定脚手架创建 san init <template> <app-name> template 是工程项目脚手架地址,支持 github、icode、gitlab 等 re