6 EYLÜL 2009, Pazar
____ İnit() ana sınıfı's ____init çağrısı()?
Objective-C dilinde bu yapı var alışkınım:
- (void)init {
if (self = [super init]) {
// init class
}
return self;
}
Python da __init__
üst sınıf uygulaması aramalı?
class NewClass(SomeOtherClass):
def __init__(self):
SomeOtherClass.__init__(self)
# init class
Bu da doğru/__new__()
__del__()
için yanlıştır?
Düzenleme:Çok benzer bir soru var: Inheritance and Overriding __init__
in Python
CEVAP
6 EYLÜL 2009, Pazar
Bir şeye ihtiyacın olursa süper __init__
yapılacak ek olarak ne yapılmakta mevcut sınıf __init__,
çağırmanız gerekir Kendin beri olmaz otomatik olarak. Ama eğer süper bir şeye ihtiyacın olursa ... __init__,
hayır aramak lazım. Örnek:
>>> class C(object):
def __init__(self):
self.b = 1
>>> class D(C):
def __init__(self):
super().__init__() # in Python 2 use super(D, self).__init__()
self.a = 1
>>> class E(C):
def __init__(self):
self.a = 1
>>> d = D()
>>> d.a
1
>>> d.b # This works because of the call to super's init
1
>>> e = E()
>>> e.a
1
>>> e.b # This is going to fail since nothing in E initializes b...
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
e.b # This is going to fail since nothing in E initializes b...
AttributeError: 'E' object has no attribute 'b'
__del__
aynı şekilde, (ama sonuçlanması için __del__
güvenmek konusunda dikkatli olun ile deyimi ile yapmak yerine düşünün).
Ben __init__.
tüm başlatma yapıyorum nadiren __new__.
kullanın
Bunu Paylaş:
Nasıl'dilerseniz sözü'in a s...
' ____ yeni s kullanın ve ____ini...
Uzaktan Yordam çağrısı sql server 2008...
Eğer ajax çağrısı nedeniyle tepki güve...
saf JavaScript jQuery eşdeğer'in ...