打印类实例名称的方法

时间:2017-06-15 14:46:42

标签: python python-3.x

我是新手并编写一个来执行跟踪和计时任务。看过this但仍然无法使功能的一个方面起作用。

以下是我要证明问题的部分:

class seperate_trackers():

    def __init__(self): 
        print ("class initiated")

    def print_instance_name(self):
        print (self.__class__.__name__)

创建它的实例:

track_task1 = separate_trackers()
>> class initiated

在那里运行方法:

track_task1.print_instance_name()
>> separate_trackers

这不是我想要的!

如何修复该方法,以便在运行时返回track_task1

3 个答案:

答案 0 :(得分:3)

这不是一个好主意。如果你希望你的实例有一个名字,那应该是实例本身的一个属性(变量的名称只是一个指针,它不应该代表对象的状态)。

请改为尝试:

# We don't usually use snake case for class names in python (and its 'separate')
class SeparateTrackers():

    def __init__(self, name): 
        self.name = name


instance1 = SeparateTrackers("instance_name")

print(instance1.name) # instance_name

答案 1 :(得分:1)

对象不知道哪些变量引用它们。可以有任意数量的对象引用,并且它们都不是#34;真正的对象,"它们都与对象的名称一样有效。此外,可能没有简单名称的引用:

tf.reduce_any

没有什么有用的方法可以找出哪些变量引用了一个对象。

答案 2 :(得分:1)

class SeparateTrackers:
  def __init__(self, instance_name):
    self.instance_name = instance_name

  def __str__(self):
    return self.instance_name

所以你可以使用像

这样的东西
a = SeparateTracker("first instance")
print(a) # print instance's name