当我在Python中派生一个类时,我需要从派生的Base.__init__(self)
函数中调用__init__(self)
,如
class Base(object):
def __init__(self):
pass
class Der(Base):
def __init__(self) :
Base.__init__(self)
我是否需要对__new__(self)
和__del__(self)
等函数执行相同的操作,例如
class Base(object):
def __new__(self):
pass
def __init__(self):
pass
def __del__(self) :
pass
class Der(Base):
def __new__(self):
Base.__new__(self)
def __init__(self) :
Base.__init__(self)
def __del__(self) :
Base.__del__(self)
我很想知道,因为如果我不这样做,似乎什么都不会出错。
我确信python gc
会照顾,但如果我不从Derived链中调用它们,我还有什么需要担心的吗
答案 0 :(得分:-2)
__del()
和__new()__
的使用很简单,但不是__new()__
由于super().__new()__
返回类的实例,我们需要调用class Base(object):
def __new__(self):
return super().__new__(self)
class Derive(Base):
def __new__(self):
return super().__new__(self);
直到对象链,如下所示
__del()__
__init()__
可以使用类似于Base.__del()__
,调用__del()
不是强制性的,除非并且直到基本class Base(object):
def __new__(self):
return super().__new__(self)
def __init__(self):
self.Value = 200
def __del__(self):
pass
class Derive(Base):
def __new__(self):
return super().__new__(self);
def __init__(self):
Base.__init__(self)
def __del__(self):
Base.__del__(self)
函数需要进行一些清理。
编写问题中提到的代码的正确方法是
__new()__
除非我们真的需要,否则最好不要实施__del()__
和<?php
if {
// do stuff
}
else {
if {
// do stuff
}
else {
echo "<div class = 'reddit-image pull-left' style = 'width:180px'><img src = '" . get_post_meta($post->ID, 'wpedditimage', true ) . "' width = '180px' class='img-rounded'></div>";
}
?>