国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Python__str__(self)和__unicode__(self)

2019-11-14 17:21:33
字體:
供稿:網(wǎng)友

官方文檔:https://docs.python.org/2.7/reference/datamodel.html?highlight=__mro__

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.

【譯文】通過內(nèi)嵌方法str()調(diào)用,并通過print語句計算對象的“非正式”字符串表示。這跟__repr__()的區(qū)別在于,它不需要是一個合法的Python表達式:可以用一種更便捷或簡明的表現(xiàn)方式。返回類型必須是一個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.

【譯文】實現(xiàn)unicode()內(nèi)嵌函數(shù);應(yīng)該返回Unicode對象。當(dāng)沒有定義這個方法時,取而代之的是string轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果是用系統(tǒng)默認編碼轉(zhuǎn)化為Unicode。

 

============以下內(nèi)容翻譯這里==============

__str__()是Python的一個“魔幻”方法,這個方法定義了當(dāng)object調(diào)用str()時應(yīng)該返回的值。Django在許多地方使用str(obj)(或者相關(guān)方法,unicode(obj)——見下文),比如說在Django管理站點加載一個對象時顯示它的值或者作為對象的顯示值插入模板中。因此,我們應(yīng)該總是返回一個友好的,用戶可讀的字符串作為對象的__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__()方法是在一個對象上調(diào)用unicode()時被調(diào)用的。因為Django的數(shù)據(jù)庫后端會返回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__()方法調(diào)用__unicode__()方法,然后把結(jié)果轉(zhuǎn)換為UTF-8編碼的字符串對象。在實際開發(fā)中,建議:只定義__unicode__()方法,需要的話讓Django來處理字符串對象的轉(zhuǎn)換。

============翻譯結(jié)束==========================

在Flask里,定義一個Article類的數(shù)據(jù)模型相應(yīng)的寫法可以寫成:

class Article(db.Document):    Title = db.StringField(max_length=255, required=True)    SegTitle = db.StringField(max_length=255)    Url = db.StringField(max_length=255, required=True)    Id = db.StringField(max_length=255, required=True)    Summary = db.StringField(max_length=255)    Content = db.StringField()    SegContent = db.StringField()    Tags = db.ListField(db.EmbeddedDocumentField(Tag))    StrTags = db.ListField(db.StringField(max_length=30))    LabeledTags = db.ListField(db.StringField(max_length=30))    CrawledDate = db.DateTimeField()    PostDate = db.StringField()    Source = db.StringField()    OriginalSource = db.StringField()    @property    def post_type(self):        return self.__class__.__name__    def __unicode__(self):        return self.Title    meta = {        'allow_inheritance': False    }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 老河口市| 广昌县| 邻水| 阿坝县| 栾城县| 马尔康县| 明星| 电白县| 全椒县| 松潘县| 克什克腾旗| 阿瓦提县| 邯郸市| 杭锦旗| 商河县| 桐庐县| 句容市| 吉林省| 黄石市| 乌兰察布市| 曲周县| 清远市| 五寨县| 弥渡县| 安泽县| 调兵山市| 林口县| 蒲城县| 都匀市| 白银市| 溧水县| 涟水县| 苍南县| 泊头市| 台东市| 彭阳县| 梓潼县| 饶河县| 孙吴县| 通城县| 精河县|