Son birkaç gün içinde python öğrenmeye başladım ve nesne yönelimli programlamayı keşfederken sorunlara yol açıyorum. Ben pydev eklentisini çalıştırırken Eclipse kullanıyorum, python 3.3 beta üzerinde çalışıyorum ve bir windows 64 bit sistemi kullanıyorum.Python'da diğer sınıflar nasıl doğru şekilde genişletilir? (python v3.3)
Sınıfı ilklendirebilir ve üst sınıfını genişletmeye çalışmıyorum (örneğin, farklı bir kaynak dosyada kodladığım her sınıf). Örneğin, aşağıdaki kod derler ve iyi çalışıyor.
class pythonSuper:
string1 = "hello"
def printS():
print pythonSuper.string1
ve erişim ve çalıştırmak için kod
...from stackoverflow.questions import pythonSuper
class pythonSub:
pysuper = pythonSuper.pythonSuper()
pysuper.printS()
Dediğim gibi, onlar olur. Aşağıdaki kod, bu doğru değildir. Bu, bu doğru değildir. Süper sınıfı kesinlikle en azından benim bilgime göre. Bu alt sınıf Eclipse bu hatayı
Traceback (most recent call last):
File "C:\Users\Anish\workspace\Python 3.3\stackoverflow\questions\pythonSub.py",
line 7, in <module>
class pythonSub(pythonSuper):
TypeError: module.__init__() takes at most 2 arguments (3 given)
Ben neler olduğunu hiç bir fikrim yok yazdırır çalıştırılır
from stackoverflow.questions import pythonSuper
class pythonSub(pythonSuper):
pass
pythonObject = pythonSub()
pythonSub.pythonSuper.printS()
dışarı weirds alt sınıf bu. Thenewboston'ın öğreticilerinden python öğreniyorum, ama bunlar modası geçmiş (ben onun eğitim kodunun python sürüm 2.7'yi kullandığını düşünüyorum). Ayrıca IDLE kodluyor, bu da sınıflarının hepsinin tek bir dosyada yer aldığı anlamına geliyor. Ancak, benimki, hepsi kendi dosyalarında kodlanmış. Bu benim aldığım kod hatalarının, güncel sözdizimi veya bu dilde bilgi eksikliğimin sonucu olup olmadığı hakkında hiçbir fikrim yok anlamına geliyor. Ama ben digress. Herkes bir çözümle ve/veya kodun neden yanlış gittiğini ve/veya düzeltmek için neler yapabileceğimi açıkladıysa. Bir açıklama tercih edilir. Neyi yanlış yaptığımı bilmeyi tercih ediyorum. Bu nedenle, bazı durumlarda kopyaları kopyalayıp yapıştırmak ve işe yaradığını görmek yerine, benzer durumlardaki sorunu önlemek ve düzeltmek. Teşekkürler, ve ben de yanıtları bekliyorum,
teşekkürler, ama şimdi bu hatayı gönderiyor Traceback (son çağrı son): Dosya "C: \ Users \ Anish \ workspace \ Python 3.3 \ stackoverflow \ questions \ pythonSub."Py, pythonSub.pythonSuper.printS() AttributeError satır 11: tip nesne 'pythonSub' hayır özelliği 'ni pythonSuper' vardır ve kimseyi rahatsız etmek istemiyorum, ama herhangi bir neden –
pipsqueaker117
Neden beklediğiniz pythonSub pythonSuper'ı genişletiyor, onu içermiyor. 'printS' kalıtsaldır ve doğrudan pythonSub örneğiniz üzerinden erişebilirsiniz. –
@DanielRoseman Üzgünüm, başımdan biraz uçtu. , um, noob dil? (Alternatif olarak tüm bu şeyleri öğrenebileceğim bir sayfaya bağlayabilirsiniz.) – pipsqueaker117