2014-02-17 50 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'。) –