Classe Z ' Filminin Konusu : Classe Z is a movie starring Andrea Pisani, Greta Menchi, and Enrico Oetiker. The school has started again in a scientific lyceum. There's something new: the most exuberant guys have been moved from their respective classes in a...
Il tuttofare(2018)(6,5-226)
Come un gatto in tangenziale(2017)(6,4-1187)
Io c'è(2018)(6,3-563)
Qualunquemente(2011)(6,1-2176)
Il permesso - 48 ore fuori(2017)(6,0-268)
La casa di famiglia(2017)(5,9-181)
Benedetta follia(2018)(5,9-739)
Mamma o papà?(2017)(5,5-649)
Gli sdraiati(2017)(5,5-387)
Il principe abusivo(2013)(5,4-1350)
Sconnessi(2018)(5,3-288)
c3 superclass linearization olarak da bilinen bir algoritma. python ise kullandığı bu algoritmanın ismini mro ya da method resolution order olarak kullanmaktadır. multiple inheritance sırasında oluşabilecek potansiyel diamond problem için kullanılarak miras alınan metotların doğrusallaştırılarak sırayı koyulmasını amaçlamaktadır. prensip olarak depth-first daha sonra left-right olarak doğrusallaştırır. nasıl mı?class x: passclass y: passclass z: passclass a(x, y): passclass b(y, z): passclass m(b, a, z): passprint(m.mro())# [<class 'm'>, <class 'b'>, <class 'a'>, <class 'x'>, <class 'y'>, <class 'z'>, <class 'object'>]m -> b -> y -> z -> a -> x -> y -> z şeklinde bir beklentimiz vardı. z ve y sınıfı sanki iki kere çağırılmış gibi duruyor. aslında buradaki problem hangi metodun hangi sırayla miras alınacağı ve önceliğe sahip olacağı ile alakalıdır. sınıf hiyerarşisine şu şekilde bakalım ve mro uygulamasının nasıl olduğunu anlayalım:- m- b, y, z- a, x, y- zilk olarak m sınıfı çağırılır, sonra sırayla miras alınan sınıflar aramaya dahil edilir. depth-first olduğu için ilk olarak b seçilir daha sonra onun miras aldığı y ve z seçilmez çünkü algoritmamız depth-first öncelikliydi bu sebeple arama işlemi devam eder ve a sınıfı seçilir. aramanın bir sonraki adımına ait olan z sınıfının superclass'ı object olduğundan left-right seçimi gerçekleşmelidir. bu sebeple bir adım öncesine gidilir; x ve y sınıfları ardından z sınıfı seçilir. en son adım olarak da superclass'ın miras aldığı object seçilir. böylece doğrusallaştırma işlemi tamamlanır.sonradan gelen edit: python'da diamond problem çözümü olarak sunulan super() kullanımı aslında superclass'ın metodunu değil sıradaki (mro ile oluşturulan sıraya göre) çalışıtırılacak olan metodu çağırır.
(aaron - 25 Mayıs 2016 16:40)
Yorum Kaynak Link : c3 linearization