Python __str__(self)和__unicode__(self)
2018-03-07 00:22
302 查看
object. str ( self )
Called by the str() built-in function and by the print statement to compute the “informal” string representation of an object. This differs from repr() in that it does not have to be a valid Python expression: a more convenient or concise representation may be used instead. The return value must be a string object.【译文】通过内嵌方法str()调用,并通过print语句计算对象的“非正式”字符串表示。这跟repr()的区别在于,它不需要是一个合法的Python表达式:可以用一种更便捷或简明的表现方式。返回类型必须是一个string对象。object. unicode ( self )
Called to implement unicode() built-in; should return a Unicode object. When this method is not defined, string conversion is attempted, and the result of string conversion is converted to Unicode using the system default encoding.【译文】实现unicode()内嵌函数;应该返回Unicode对象。当没有定义这个方法时,取而代之的是string转换,转换的结果是用系统默认编码转化为Unicode。=========================================================== ==============str()是Python的一个“魔幻”方法,这个方法定义了当object调用str()时应该返回的值。Django在许多地方使用str(obj)(或者相关方法,unicode(obj)——见下文),比如说在Django管理站点加载一个对象时显示它的值或者作为对象的显示值插入模板中。因此,我们应该总是返回一个友好的,用户可读的字符串作为对象的str。尽管这不是必须的,但还是建议这么做。例如:class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)def __str__(self):
# Note use of django.utils.encoding.smart_str() here because
# first_name and last_name will be unicode strings.
return smart_str('%s %s' % (self.first_name, self.last_name)unicode()方法是在一个对象上调用unicode()时被调用的。因为Django的数据库后端会返回Unicode字符串给model属性,所以我们通常会给自己的model写一个unicode()方法。前面的例子也可以更简单地写成:class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
Called by the str() built-in function and by the print statement to compute the “informal” string representation of an object. This differs from repr() in that it does not have to be a valid Python expression: a more convenient or concise representation may be used instead. The return value must be a string object.【译文】通过内嵌方法str()调用,并通过print语句计算对象的“非正式”字符串表示。这跟repr()的区别在于,它不需要是一个合法的Python表达式:可以用一种更便捷或简明的表现方式。返回类型必须是一个string对象。object. unicode ( self )
Called to implement unicode() built-in; should return a Unicode object. When this method is not defined, string conversion is attempted, and the result of string conversion is converted to Unicode using the system default encoding.【译文】实现unicode()内嵌函数;应该返回Unicode对象。当没有定义这个方法时,取而代之的是string转换,转换的结果是用系统默认编码转化为Unicode。=========================================================== ==============str()是Python的一个“魔幻”方法,这个方法定义了当object调用str()时应该返回的值。Django在许多地方使用str(obj)(或者相关方法,unicode(obj)——见下文),比如说在Django管理站点加载一个对象时显示它的值或者作为对象的显示值插入模板中。因此,我们应该总是返回一个友好的,用户可读的字符串作为对象的str。尽管这不是必须的,但还是建议这么做。例如:class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)def __str__(self):
# Note use of django.utils.encoding.smart_str() here because
# first_name and last_name will be unicode strings.
return smart_str('%s %s' % (self.first_name, self.last_name)unicode()方法是在一个对象上调用unicode()时被调用的。因为Django的数据库后端会返回Unicode字符串给model属性,所以我们通常会给自己的model写一个unicode()方法。前面的例子也可以更简单地写成:class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __unicode__(self): return u'%s %s' % (self.first_name, self.last_name)如果定义了unicode()方法但是没有定义str()方法,Django会自动提供一个str()方法调用unicode()方法,然后把结果转换为UTF-8编码的字符串对象。在实际开发中,建议:只定义unicode()方法,需要的话让Django来处理字符串对象的转换。
相关文章推荐
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- Python __str__(self)和__unicode__(self)
- python __str__(self) __unicode__(self)
- Python中文处理:str与unicode
- python递归实现字典中的Unicode对象encode成str
- Python中的str与unicode处理方法
- python将unicode和str互相转化
- python的str,unicode对象的encode和decode方法
- python类中__unicode__和__str__方法的妙用
- python2.7 中unicode、str的编解码关系
- python3 把\u开头的unicode转中文,把str形态的unicode转中文
- python编码(str和unicode)
- python 编码unicode 和 str
- python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str
- python将unicode转为str的方法
- Python str unicode转换