2011-07-13 24 views
19

Python'daki yöntemler hangi noktada get özelliğine sahip olur? -Sınıfta tanımlandıkları anda olur mu? Python neden hiçbir argümanı olmayan bir yöntemi tanımlamamı sağlıyor (ilk self argümanı bile değil)?Python'da "classmethod" ve "staticmethod" yöntemleri nasıl uygulanır?

classmethod ve staticmethod'u nasıl kullanacağımı biliyorum ve yerleşik işlevlerin olduğunu biliyorum, ancak bu şekilde dekore edilmiş bir işleve ne oluyor?

Temel olarak, sınıf tanımı ve sınıf yapısı arasında gerçekleşen "sihir" hakkında merak ediyorum.

cevap

21

Bunu kontrol edin.

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

Ayrıca funcobject.c içinde, sınıf ve statik yöntem nesneler için kaynak koduna göz atabilirsiniz:

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

Sınıf yöntemi nesne tanımı hattı 694 başlar, süre Statik yöntem nesne tanımı 852 satırında başlar. (Metodobject.c de var funcobject.c de "method" başlıklı öğeleri sahip komik buluyorum.)

+3

Ah, Python imple göstermek için çok güzel mentations. –

+0

Sevindim Yardımcı olabilirim. – JAB

İlgili konular