我正在打印一个类的实例名。 在本例中,它是一个计时器,可以打印出代码中各个重叠部分的运行时间:
class timerstart:
def __init__(self):
# Sets some variables with system time
def stop(self):
# Calculates current total time
print(*instance name*, 'total time is ...')
因此,当我在代码中调用它时,它看起来像:
allcode=timerstart()
# some code
subcode=timerstart()
# some code
subcode.stop()
# some code
allcode.stop()
输出:
subcode total time...
allcode total time...
我知道我可以用它的名字来初始化函数:allcode=timerstart(name='allcode')
真烦人。你知道吗
我还遇到了使用inspect.currentframe().f_back.f_locals.items()
进行回溯的问题
有没有打印实例名的方法,比如print(self.selfname)
之类的?你知道吗
使
timerstart
成为context manager。那么您根本不需要对timer
对象的引用。你知道吗然后使用
with
语句编写代码:您可以使用
contextlib.contextmanager
定义管理器,而不是在类上显式定义__enter__
和__exit__
方法。你知道吗简单的回答是:不能总是工作。Python变量名是指向该对象的单向映射。同一个实例可能有多个名称,这意味着多个变量引用同一个实例。一个简单的例子是:
这里,由
obj1
实例化的对象也被命名为obj2
。打印或获取此类的实例名称现在是不明确的。你知道吗获取对象
allcode
和subcode
的名称的最佳方法是分配一个名称字段,并像以前一样实例化它,或者修改构造函数以便必须为其分配一个名称。你知道吗相关问题 更多 >
编程相关推荐