2016-03-19 39 views
1

Bir URL alan ve onu bölümlere ayırmamı ve şema, sunucu ve yolun her birini döndürmemizi sağlayan bir sınıf oluşturmaya çalışıyorum. BenPython-Class-x nesnesi oluşturma 'split' özniteliğine sahip değil

test_url.scheme() 

veya herhangi bir sunucu veya yol çalıştırırsanız

class SimpleURL: 
    def __init__(self,url): 
     self.url=url 
    def scheme(self): 
     return url.split("://")[0] 
    def server(self): 
     return url.split("/")[2] 
    def path(self): 
     return url.split(url.split("/")[2])[1] 

test_url = SimpleURL("https://gumgoose.com/larry/friendo") 

Sonra, ben

NameError: name 'url' is not defined 

ben url atarsanız o iş yapmak mümkün hatayı olsun Fonksiyonun dışında "url" değişkenini, ancak benim anlayışım için "test_url" yazan satır benim için bunu yapmalı.

Benim için biraz ışık tutabilir mi?

+0

sadece pratik için mi yapıyorsun? URL'leri gerçekten ayrıştırmak istiyorsanız, bu standart lib'deki bir modül: https://docs.python.org/2/library/urlparse.html – PaulMcG

cevap

3

Tüm sınıf yöntemlerinizde, diğer tüm sınıf yöntemlerine ve özelliklerine başvurmak için self'u açıkça kullanmanız gerekir. Bunu yapmazsanız

def scheme(self): 
    return self.url.split('://')[0] 

, Python olacak sadece yönteminiz ve küresel kapsamı içinde yerel arama kapsamı. Bu nedenle, sınıfınızın dışındaki url'u tanımlarsanız, herhangi bir sorunla karşılaşmazsınız.

+0

Duh! Bunu söyledikten sonra bu çok açık görünüyor. Şimdi mükemmel çalışıyor, teşekkürler! –

+0

@NathanWall Sorununuzu çözdüyseniz, ileride benzer soruları olan diğer kişilere yardımcı olmak için bunu bir çözüm olarak seçmeyi düşünün. – Suever

1

Python çok yani dönüş self.url.split örneği nesne başvurusu gerektirir (': //') [0]

İlgili konular