我看到一段代码是这样的:
class Car:
def __init__(self,color,mileage):
self.color = color
self.mileage = mileage
def __str__(self):
return 'a {self.color} car'.format(self=self)
my_car = Car('blue', 13585)
print(my_car)str方法中使用的self=self是如何工作的?
发布于 2018-07-20 21:35:12
def __str__(self):
return 'a {self.color} car'.format(self=self)self=self中的第一个self指的是format函数将在字符串中更改的内容。例如,它也可以是
'a {obj.color} car'.format(obj=self)self=self中左侧的self指的是将要输入的实际值。在本例中,对象作为参数传递。换句话说,它也可能是
def __str__(obj):
return 'a {self.color} car'.format(self=obj)因此,对于整体视图,您可以使用
def __str__(value_passed):
return 'a {value_to_change.color} car'.format(value_to_change=value_passed)现在为什么要使用self__?
这只是python编程中使用的一种约定。Python会自动将一个对象传递给它的实例方法,该对象是指向它自己的指针。还可以查看this question以了解更多信息
发布于 2018-07-20 21:35:07
self在两个不同的上下文中使用;一个用作方法中的局部变量,另一个用作格式字符串中的标识符。您可以重命名其中一个或全部重命名,并得到相同的结果:
return "a {c.color} car".format(c=self)或
def __str__(foo):
return "a {self.color} car".format(self=foo)甚至是
def __str__(foo):
return "a {bar.color} car".format(bar=foo)我倾向于三种方法中的第一种,因为没有充分的理由违反将实例方法的第一个参数命名为self的约定。
发布于 2018-07-20 21:34:51
第一个self ( =符号左侧)引用'a {self.color} car' (您可以随意命名).`中的self字符串
第二个self ( =符号的右侧)引用__str__()方法的第一个参数,该参数始终是对类的当前实例的引用。在您的示例中,这将替换为my_car。
https://stackoverflow.com/questions/51443620
复制相似问题