http___pythontr.blogspot.com.tr_2008_08_nesnel-programlama-sizin-programnz.html_1.xml
1.1 2.1 3.1 4.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 23.1 24.1
Python child class constructor argument I have a parent class whose constructor has three argument, now I want to have a child class whose constructor only has two argument, but it's telling me it has to be given three arguments when I try to create the child object. class Parent(Exception): def _init_(self, a, b): super(Parent, self)._init_(a, b) class Child(Parent): def _init_(self, b): super(Child, self)._init_(123, b) # somewhere in the code I have: raise Child("BAD_INPUT") What I'm trying to do is instantiate a Child object with only one argument then in the constructor of that Child object call Parent's constructor and pass in two argument, one is hard-coded (123) . Error I got: TypeError: __init__() takes exactly 3 arguments (2 given) 1 Answers you should be able to use: class Parent(Exception): def __init__(self, a, b): self.a = a self.b = b class Child(Parent): def __init__(self, b): super().__init__(self.a, b)
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1
- Nesnel yaklaşımda bir sınıf yaratılır, sınıf bir genellemedir. Belli bir grup nesnenin ortak özelliklerini barındırır(örn: organism sınıfı bütün organizmalarda bulunan işlem ve özellikleri barındırır.) - Nesne bu sınıf'ın bir nesneye uygulanmasıdır animal = organism() yada human = organism() dediğimiz zaman buradaki animal ve human birer nesnedir. - Sınıf özellikleri bu sınıfa ait özelliklerdir. Örneğin her organizmanın bir yaşı vardır. Bu yaş bigisini organism sınıfı üzerinde age olarak tanımlarsak [1] daha sonra bu sınıfa ait nesnelerin age özelliğini animal.age şeklinde çağırabiliriz. - Bir sınıf kendi özelliklerini kendi kendine de değiştirebilir. Bu durumda self.ozellik = hede şeklinde kullanılır. Buradaki aslında self sınıfın kendisini ifade eder. Eğer bir fonksiyon içerisinde self. kullanılacaksa o fonksiyonun argümanı içerisinde self bulumalıdır.[2] - Bir nesne oluşturuluyorken __init__ fonksiyonu otomatik olarak çağırılır. - Bir nesne siliniyorken __del__ fonksiyonu otomatik olarak çağırılır. Eğer del(nesne) kullanılarak nesne silinmez ise nesne program sonunda silinir. - __init__ ve __del__ fonksiyonları self argümanı ile belirtilmek zorundadır. - örnek olarak bir organizma sınıfı şu şekilde tanımlanabilir. class organism: def __init__(self): print "ben doğdum" self.age = 0 [1] def grow_up(self,years): self.age += years def __del__(self): print "ben öldüm" animal = organism() print "animal age is :",animal.age animal.grow_up(3) # grow up 3 years print "animal age is :", animal.age 14 Ağustos 2008 Perşembe Pyton ve Nesnel Programlama 5 yorum: girintiye dikkat!.. malum python kodluyorsunuz. :)YanıtlaSil opppsss :) düzelttim uyarı çin teşekkürler.YanıtlaSil self.age = 0 [1]YanıtlaSil Buradaki [1] fazladan sanırım :) Ayrıca, sınıf içerisinde tanımladığımı tüm fonksiyonlara "self" parametresi göndermek zorunda mıyız? Eğer öyleyse -ki öyle görünüyor- bu saçma değil mi? Orada ki self şu işe yarıyor.YanıtlaSil self.age=0 diyorsan pythona diyorsun ki ben buna dışarıdan ulaşacam bana yer ayır. kopek=organizma() kopek.age derken kopek self ile ayırmış olduğun yere geçiyor. Yani self kullanmazsan dışarıdan erişemezsin. Umarım karıştırmamışımdır :S http://www.freenetpages.co.uk/hp/alan.gauld/tutdata.htm#class şuradaki örnekleride incelersen diğer dillerde de benzer kullanımlar olduğunu göreceksin.YanıtlaSil