2016-03-19 68 views
1

我想創建一個類,它需要一個URL並允許我將它拆分成部分並返回每個方案,服務器和路徑。Python-創建一個類x對象沒有屬性'拆分'

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") 

然後,如果我跑

test_url.scheme() 

或任何服務器或路徑,我得到的錯誤

NameError: name 'url' is not defined 

我能夠做,如果我的網址分配給它的工作變量「url」在函數之外,但就我的理解而言,「test_url」開頭的行應該爲我做這件事。

有沒有人可以爲我揭開一些光?

+0

你只是練習這樣做呢?如果你真的想分析URL的話,這是標準庫中的一個模塊:https://docs.python.org/2/library/urlparse.html – PaulMcG

回答

3

在所有的類方法中,您需要明確使用self來引用所有其他類方法和屬性。

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

如果你不這樣做,Python會只有搜索你的方法在全球範圍內的局部範圍。這就是爲什麼如果您在班級以外定義url,那麼您沒有任何問題。

+0

Duh!在你說完之後,現在看起來很明顯。它現在完美運行,謝謝! –

+0

@NathanWall如果這解決了您的問題,請考慮選擇它作爲解決方案來幫助其他人在將來提出類似問題。 – Suever

1

的Python需要您引用的實例對象也即 回報self.url.split( '://')[0]

相關問題