我正在尝试覆盖两个父类函数train
并eval
在ChildClass
. 在父类中,eval()
基本上调用train()
. 但是,我知道,当我写我的代码如下,eval()
在父类试图调用该函数train()
的ChildClass
-我想eval()
在父类调用train()
父类代替。
我只是想知道是否有任何干净的解决方案来进行更改以ChildClass
允许父类调用父train()
函数?
class ChildClass(nn.Module):
def __init__(self):
super(ChildClass, self).__init__()
def train(self):
super(ChildClass, self).train()
def eval(self):
super(ChildClass, self).eval()
Run Code Online (Sandbox Code Playgroud)
父类位于 Python 包 ( pytorch
) 中,因此不应进行任何更改:
class Module(object):
#...
def train(self, mode=True):
# ...
return self
def eval(self):
return self.train(False)
Run Code Online (Sandbox Code Playgroud) 我正在使用 tqdm 绘制进度条,并且希望 tqdm 覆盖终端中的同一行,无论窗口大小如何。考虑以下代码:
from tqdm import trange
from time import sleep
t = trange(100, desc='Bar desc', leave=True)
for i in t:
t.set_description("Bar desc (file %i)" % i)
t.refresh() # to show immediately the update
sleep(0.01)
Run Code Online (Sandbox Code Playgroud)
当我的终端窗口的宽度比 宽时"Bar desc (file %i)"
,tqdm 将根据我的需要打印进度条。但是,如果我减小终端窗口的宽度,tqdm 将打印为两行。每个 tqdm 更新都会打印到新行。即使我调整终端大小,有什么方法可以让 tqdm 打印到相同的两行吗?
我在 Ubuntu 中使用 bash 终端。
我有几个相互独立编写的 python 项目(例如 a、b)。我想创建第三个项目(c),它使用这两个项目的例程,而不会对(a,b)的主要内容进行太多更改。
只要 (a.py, b.py) 在各自的项目文件夹中调用时仍然有效,对 (a, b) 内的导入语句进行细微更改就可以了。
该问题与上一篇文章(重新导入具有相同名称的不同 python 模块)有点相似,但是:
我使用的是 Python 3,因此相对导入的工作方式似乎有所不同。
我想知道如何替换“from utils import *”行,如下例所示。
我在当前工作目录下有另一个 utils.py,遮蔽了项目 a 和 b 中的其他 utils.py。
比如我的项目如下:
a/a.py 的内容:
import utils
utils.hello()
Run Code Online (Sandbox Code Playgroud)
a/utils.py 的内容:
def hello():
print('hello from a')
Run Code Online (Sandbox Code Playgroud)
b/b.py 的内容:
from utils import *
hello()
Run Code Online (Sandbox Code Playgroud)
b/utils.py 的内容:
def hello():
print('hello from b')
Run Code Online (Sandbox Code Playgroud)
main.py 的内容
import sys
sys.path.append('../a')
import a
sys.path.append('../b')
import b
import utils
utils.hello()
Run Code Online (Sandbox Code Playgroud)
该示例打印(我希望三行分别打印 a、b、c): …