Python 在类的str()函数中使用实例名
我写了一个关于笛卡尔坐标系中的点的类(每个点实例都有横坐标和纵坐标),每个实例都有它的名称,例如我们有点“a”(坐标(2,3))和“B”(坐标(1,2))。 在str()函数中,我需要使用实例的名称来获得良好的输出。 例如,当使用print命令(print(A))时,我需要打印程序(A的横坐标为2) 以及在主脚本中写入(打印(B))时显示(B的横坐标为1)。 主要问题是要显示实例的名称。 是否有一个函数返回某个类的实例名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)),
我尝试在init()函数中使用self.namehx(id(self)),然后使用self.name(),但它没有做到这一点。正如@chepner评论的那样,对象不知道分配给它们的名称 如果希望点类知道其实例名称,请将其作为参数添加到
\uuuu init\uuuu()
您需要实现repr或str方法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...'