2016-03-21 21 views
1

init içinde bir değişken oluşturmak için çalışıyorum ama aynı sınıfta başka bir yöntemde tanınmıyor.Aynı sınıfın başka bir yönteminde __init__ değişkenini kullanma

ben self.myvarlol) (send_myheaders düzgün çalışmıyor neden bilmiyorum: S

KODU:

from http.server import HTTPServer, BaseHTTPRequestHandler 
import time 

class myserveromg(BaseHTTPRequestHandler): 

    def __init__(self, a, b, c): 
     BaseHTTPRequestHandler.__init__(self, a, b, c) 
     self.myvarlol = "asdf" 
     self.date = self.date_time_string() 


    def send_my_headers(self): 
     self.send_header("Content-type", "text/html") 
     self.send_header("Date", self.date) 
     self.end_headers() 

    def do_GET(self): 
     self.send_response_only(200) 
     self.send_my_headers() 
     self.wfile.write(bytes("<html><head><title>Title goes here.</title></head>", "utf-8")) 
     self.wfile.write(bytes("<body><p>This is a test. </p>", "utf-8")) 
     self.wfile.write(bytes("<p>You accessed path: %s</p>" % self.path, "utf-8")) 
     self.wfile.write(bytes("</body></html>", "utf-8")) 


if __name__ == "__main__": 
    hostName = "localhost" 
    hostPort = 9000 

    appPortal = myserveromg 
    myServer = HTTPServer((hostName, hostPort), appPortal) 

    try: 
     print(time.asctime(), "Server Starts - %s:%s" % (hostName, hostPort)) 
     myServer.serve_forever() 
    except KeyboardInterrupt: 
     pass 

    myServer.server_close() 
    print(time.asctime(), "Server Stops - %s:%s" % (hostName, hostPort)) 

HATA:

File "C:\Users\Anonym-PC\Desktop\nuseke.py", line 14, in send_my_headers 
    self.send_header("Date", self.date) 
AttributeError: 'myserveromg' object has no attribute 'date' 
+3

Sınıfın bir örneğini başlatmazsınız. Cevabınız için appPortal = myserveromg() –

+0

Ty deneyin! Bunu denedim, ancak şu an bu halim var: Traceback (son çağrı son): "C: \ Users \ Anonym-PC \ Desktop \ nuseke.py", satır 30, için appPortal = myserveromg() TypeError: __init __() eksik 3 gerekli konumsal argüman: 'a', 'b' ve 'c' – Rakanitshu

cevap

4

Sen appPortal = myserveromg demek ama Bu sadece bir takma ad oluşturur. appPortal artık myserveromg ile aynı şey: bir sınıf. __init__'u arayacak ve date'u tanımlayacak bir örnek oluşturmanız gerekir. Bunu yapmak için, parantez ekleyin:

appPortal = myserveromg(a, b, c) # a, b, and c will need to be defined earlier on. 
+0

Cevabınız için teşekkürler! ) ( appPortal = myserveromg içinde: "\ Users \ Anonim-PC \ Desktop \ nuseke.py C" çizgi 30 Dosya: bu durumda bu hatayı traceback (son En son çağrı) olsun TypeError: __init __() 3 gerekli konumsal argüman eksik: 'a', 'b' ve 'c' – Rakanitshu

+0

@Rakanitshu: Sadece üç argüman vermeniz gerekiyor. Onu tanımlayan kişi sensin, hangisinin hangisi olduğunu bilen kişi sensin. – zondo

+0

üç argüman "BaseHTTPRequestHandler" (Python kitaplıkları) 'dir ve ben neden HTTPServer ((hostName, hostPort), appPortal) içinde tanımlamıyorsam bilmiyorum: S – Rakanitshu

İlgili konular