0

私は初心者です。私の教科書には、次の例があります。

from django.contrib import admin
from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'timestamp')

admin.site.register(BlogPost, BlogPostAdmin)

これをいじり始めたとき、ここでタプルとリストの両方を使用できることを発見しました (list_display = ('title', 'timestamp') または list_display = ['title', 'timestamp'])。

なぜこれが可能なのかという質問への答えをドキュメントで見つけるのを手伝ってくれませんか? これは、ドキュメントを操作する際のいくつかのスキルを詳しく説明するのに役立つ場合があります。

4

3 に答える 3

2

Djangoのドキュメントで言及されるとは思わないでください。それは些細な Python です: ほとんどの場合、リストとタプルは同等です。なぜなら、コードはイテラブルを期待しているだけだからです。

それはおそらくあなたが見逃しているポイントです-それはダックタイピングに関係しており、オブジェクトが期待される機能(この場合は反復可能)を公開している限り、それが正確なタイプであることを気にする必要はありません。

于 2012-10-03T08:14:31.057 に答える
0

シーケンスのみを読み取る場所では、リストはタプルに相当します。比較dir([])dir(())て、それらには多くの共通点があるが、タプルにはそれを変更できるすべてのものが欠けていることがわかります。http://ideone.com/iHd0h

于 2012-10-03T08:16:29.200 に答える
0

Python ではタプルとリストの両方で使用されるインデックス アクセサーが同じであるため、コードが機能すると思います。これは Django に固有のものではなく、すべての Python コードで機能します。

# a is a list
a = ['a1', 'a2', 'a3']
# while b is a tuple
b = ('b1', 'b2', 'b3',)
c = a
print(c[1])
c= b
print(c[1])

それは印刷されます:

a2
b2

これはダックタイピングと呼ばれます。

アヒルのように歩き、アヒルのように泳ぎ、アヒルのように鳴く鳥を見るとき、私はその鳥をアヒルと呼びます。

于 2012-10-03T08:20:16.593 に答える