2014-02-17 63 views
0

我有followong類:如何在Python中__add__路徑?

# -*- coding: utf-8 -*- 
import os 

class Path(object): 
    "Docstring" 

    @classmethod 
    def __init__(self, path = ''): 
     "docstring __init__" 
     self.path=os.path.normpath(path) 


    def __eq__(self, ruta): 
     if self.path == ruta: 
      return True 
     else: 
      return False 

    def __add__(self, other): 
     return os.path.join(self, other) 

我需要添加與兩條路徑添加: 路徑( '/家庭/')+路徑('佩佩)

我有2個問題:

1)如何訪問這兩個對象的值,以便在方法中添加add? 我已經認識到A + B是想在這個代碼調用a.add(二)...

2),返回我以下錯誤: 文件「/家/ esufan /蟒蛇/ lib中/ python2。 7/posixpath.py」 75行,在加入 如果b.startswith( '/'): AttributeError的: '路徑' 對象有沒有屬性 'startswith'

回答

2

os.path.join()接受字符串,您的自定義Path不實例類。您需要訪問兩個對象的path屬性。

def __add__(self, other): 
    return os.path.join(self.path, other.path) 
+0

以這種方式,聯接的結果是:「佩佩/佩佩 它的鏈接相同的說法...:/ –

+0

@ eduardo.sufan那是因爲你已經指定'__init__'爲'類方法',你不應該這樣做。刪除'@ classmethod'行,它會工作。 (Classmethods在類上運行,所以目前你在'Path'的_all_實例上設置'path'。) –