Telnet üzerinden bir laboratuar cihazına bağlanmaya çalışıyorum.Python - eski stil sınıflarından miras alma
import telnetlib
class Instrument(telnetlib.Telnet):
def __init__(self, host=None, port=0, timeout=5):
super(Instrument,self).__init__(host, port, timeout)
Bu kodda yapmaya çalışıyorum Tüm ebeveynden __init__
yöntemini devralır: Bizim araca özgü fonksiyonları içerecek şekilde, standart kütüphanesinde telnetlib
modülünden Telnet
sınıfını genişletmek istiyorum sınıf (telnetlib.Telnet
) ve standart argümanları iletir, böylece daha sonra __init__
'a şeyler ekleyebilirim. Bu formül benim için başka vesilelerle çalıştı; ondan devralan vermez (
TypeError: must be type, not classobj
Ben telnetlib için kaynak koduna baktım ve Telnet eski tarz bir sınıfını gibi görünen: o super()
deyimi de bana bir hata verir bu sefer örneğini çalıştığınızda object
) - Bu benim sorunumun kaynağı olabilir mi merak ediyorum? Eğer öyleyse, nasıl aşılabilir? Türetilmiş sınıfın hem üst sınıftan hem de object
'dan miras aldığı bazı kod örneklerini gördüm, ancak bunun benimle aynı soruna bir yanıt olup olmadığından emin değilim.
Tam açıklama: Ben de super()
yerine Telnet
ile from telnetlib import Telnet
super()
yerine telnetlib.Telnet
kullanarak çalıştı ve var. Bu durumlarda sorun devam etmektedir.
Teşekkürler!
Bunu denedim - bana hata veriyor: 'TypeError: ilişkisiz yöntem __init __() ilk argüman olarak Telnet örneğiyle çağrılmalı (bunun yerine str örneği var)' –
Lütfen tam kodu ve hatayı alın az önce gönderdiğim kod. Çünkü aslında eski tarz bir sınıfın ana kurucusunu aramak isterseniz bu nasıl yapılır? – ThiefMaster
Ah, senin kodun ve benimki arasındaki farkı fark ettim - sen 'selfin' '__init__' ilk argümanı vardı. Şimdi çalışıyor - çok hızlı cevapladığınız için teşekkürler! Kurucunun ilk argümanı olarak niçin 'kendini' vermeniz gerektiğini açıklayabiliyor musunuz? Python’da yeniyim. –