Python 在类的str()函数中使用实例名

Python 在类的str()函数中使用实例名,python,python-3.x,Python,Python 3.x,我写了一个关于笛卡尔坐标系中的点的类(每个点实例都有横坐标和纵坐标),每个实例都有它的名称,例如我们有点“a”(坐标(2,3))和“B”(坐标(1,2))。 在str()函数中,我需要使用实例的名称来获得良好的输出。 例如,当使用print命令(print(A))时,我需要打印程序(A的横坐标为2) 以及在主脚本中写入(打印(B))时显示(B的横坐标为1)。 主要问题是要显示实例的名称。 是否有一个函数返回某个类的实例名 我尝试在init()函数中使用self.namehx(id(self)),

我写了一个关于笛卡尔坐标系中的点的类(每个点实例都有横坐标和纵坐标),每个实例都有它的名称,例如我们有点“a”(坐标(2,3))和“B”(坐标(1,2))。 在str()函数中,我需要使用实例的名称来获得良好的输出。 例如,当使用print命令(print(A))时,我需要打印程序(A的横坐标为2) 以及在主脚本中写入(打印(B))时显示(B的横坐标为1)。 主要问题是要显示实例的名称。 是否有一个函数返回某个类的实例名


我尝试在init()函数中使用self.namehx(id(self)),然后使用self.name(),但它没有做到这一点。

正如@chepner评论的那样,对象不知道分配给它们的名称

如果希望点类知道其实例名称,请将其作为参数添加到
\uuuu init\uuuu()


您需要实现reprstr方法repr在对象上使用打印时使用,而str在使用str(对象)时使用

输出:

a=SomeClass('name',4,6) b=SomeClass('name2',9,8)

a 名称横坐标:名称为。。。 B 名称的横坐标:name2是。。。 str(a) '姓名横坐标:姓名是…' str(b)
“名称横坐标:名称2是…”

请将
类的代码添加到您的问题中。如果您指的是
a=点(3,5)
,则
a
不是对象本身的一部分;它是对一个对象的外部引用。对象本身不知道什么名称引用它。
class Point(object):
    def __init__(self, name, x, y):
        self.name = name
        ...

    def __str__(self):
        return 'abcissa of %s is ...' % self.name

a = Point('a', 50, 100)
class SomeClass:

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

def __repr__(self):
    return f'abscissa of name: {self.name}  is...'

def __str__(self):
    return f'abscissa of name: {self.name}  is...'