38310


djangoを使ったソースコードに"<{0}>"がありました。  
{0}は知っているのですが、<>をつける理由がわかりません。  
この<>は文字列として認識されていませんでした。

[code]

    for h in Hello.objects.all(): print(h.your_name)
    
[/code]

とした時、<>が含まれていなかったのでそう考えました。  
ある種のタプルのようなものかなと考えています。  
しかし、ネットで検索しても見つかりません。  
うまく説明ができないのでソースコードを貼っておきます。  
<https://eiry.bitbucket.io/tutorials/tutorial/models.html>  
を参考にしました。

[code]

    from django.db import models
    class Hello(models.Model):
        your_name = models.CharField(max_length=10)
    
        def __str__(self):
            return "<{0}>".format(self.your_name)
    
[/code]


CC BY-SA 3.0
2017-09-29T16:56:33.433
38308
2017-09-30T00:02:40.853
13520
question
python django
djangoの"<{0}>"は何を意味するのか？


ただの文字ですよ。

> <>が含まれていなかったのでそう考えました。

Helloクラスの `__str__` メソッドですから、Helloのインスタンスを文字列化する時に使われるものです。  
確かめるなら、

[code]

    for h in Hello.objects.all():
        print(h)
    
[/code]

です。

* * *

<https://eiry.bitbucket.io/tutorials/tutorial/models.html#id12>

ここで、`Hello.objects.all()`でlistに格納されたHelloのインスタンスを表示したとき、`<>`が2重に付いていますね。

Djangoの`Model`の`__repr__`メソッドは  
<https://github.com/django/django/blob/master/django/db/models/base.py#L512>

[code]

    def __repr__(self):
        return '<%s: %s>' % (self.__class__.__name__, self)
    
[/code]

こうなっています。`<クラス名: クラスの文字列表現>` という表示です。

Helloのインスタンスを`repr(h)`で表示すると`<Hello: <Kenji>>`のようになっていますが、この内側の `<>` が、質問の
`return "<{0}>".format(self.your_name)` に付いている `<>` です。


CC BY-SA 3.0
2017-09-30T00:02:40.853
38310
2017-09-30T00:02:40.853
12274
38308
answer