2015-07-13 5 views
-2

Я создал класс и 2 функции, которые я хотел бы запустить, когда вводится имя_описания «mikkel». Но при попытке печати Survey_route («Миккель») я получаю следующее сообщение:Python 2.7 классы: сообщение __main__ при попытке запуска класса

<__main__.SurveyRoute object at 0x10eb0cf38> 

Что мне нужно изменить, чтобы напечатать xcoord и сюжет при запуске класс?

class SurveyRoute(SurveyPlotWidget): 
    """docstring for SurveyRoute""" 

    def __init__(self, survey_name): 
     self.survey_name = survey_name 

    def read_coordinate_file(self, survey_name): 
     """ 
     coords is a library with 'benchmark nr': UTM X, UTM Y, depth 

     The coordinate name should be changed to the coordinate type. Here we are dealing with UTM coordinates 
     The coordinate type can be found in the .xls file that contains the coordinates. e.g. mikkel.xls 

     df  is the result of using the pandas package to rearrange the coords dictionary. 
     """ 
     coords = station_coordinates.get_coordinates_all(survey_name) 
     df = pd.DataFrame(coords,index=['UTM X','UTM Y','depth']) 
     df = DataFrame.transpose(df) 
     xcoord = df['UTM X'].values.tolist() 
     ycoord = df['UTM Y'].values.tolist() 

     print xcoord   

    def plot_coords(xcoord,ycoord): 

     fig = plt.figure() 
     plt.plot(xcoord, ycoord, marker='o', ms=10, linestyle='', alpha=1.0, color='r', picker = True)[0] 
     plt.xlabel('UTM x-coordinate') 
     plt.ylabel('UTM y-coordinate') 

     x_legend = np.nanmax(xcoord) + 0.01*(np.nanmax(xcoord)-np.nanmin(xcoord)) 
     y_legend = np.nanmin(ycoord) - 0.01*(np.nanmax(ycoord)-np.nanmin(ycoord)) 
     map_size = np.sqrt(pow(np.nanmax(xcoord)-np.nanmin(xcoord),2)+pow(np.nanmax(ycoord)-np.nanmin(ycoord),2)) 

     #legend_size = 100 
     #max_val = np.nanmax(val) 
     #if max_val < 50: 
     #legend_size = 10 
     fig.canvas.mpl_connect('pick_event', on_hover) 
     self.canvas.draw() 

""" 
Set package_directory to the right user (e.g. DJV) and the folder where the station_coordinates are stored. 
""" 
package_directory = '/Users/DJV/Desktop/quad-master/station_coordinates'          

#survey = SurveyRoute('mikkel') 
#print SurveyRoute('mikkel') 
#print survey.read_coordinate_file('mikkel') WORKS 
#print survey.plot_coords(xcoord,ycoord) DOESNT WORK 

print SurveyRoute('mikkel') 
+0

Thats не ошибка !!! это экземпляр класса, который вы напечатали !!! чего вы точно хотите? – Ja8zyjits

+0

Что вы ожидали от печати? –

+0

Почему, на ваш взгляд, это ошибка? Он не говорит об ошибке или дает вам красную трассировку. – jonrsharpe

ответ

0

SurveyRoute ('Миккель')

возвращает объект. Так что, когда вы звоните

печати SurveyRoute ('Миккель')

вы печатаете весь объект. Для печати xcoord при запуске класс, это в вашем __ __ инициализации функции:

self.read_coordinate_file (survey_name)

и заменить

печати SurveyRoute ('Миккель «)

с

SurveyRoute ('Миккель')

+0

Если вы хотите вызвать объект 'SurveyRoute' (т. Е.' Sr = SurveyRoute(); sr ('foo') ', вы должны переписать метод' __call__' в 'SurveyRoute' –

0

Когда вы делаете - SurveyRoute('mikkel') - это создает экземпляр/объект класса SurveyRoute, с self.survey_name равным mikkel. Когда вы пытаетесь распечатать сам объект, он печатает, как вы заметили - <__main__.SurveyRoute object at 0x10eb0cf38>.

Кроме того, если plot_coords() является методом экземпляра (я считаю, что, поскольку я вижу, что вы используете self внутри функции), то первым параметром для этого должен быть экземпляр (self). Вы должны определить это как -

def plot_coords(self, xcoord, ycoord): 

Если вы хотите, чтобы вызвать функцию для этого объекта, вы должны назвать его как -

obj = SurveyRoute('mikkel') 
obj.read_coordinate_file(<parameter survery_name>) 
obj.plot_coords(<parameters for xcoord and ycoord>) 
+0

, прежде всего, спасибо за определение сам :) второй. Мне все еще сложно определить <параметры для xcoord и ycoord>. Теперь я называю их как obj.plot_coords (xcoord, ycoord), который, очевидно, не работает. Как мне определить и/или вызвать их? – leermeester

+0

@leermeester. Как вы называете функцию, если вы положили 'self' в определение, вызов не должен вызывать никаких проблем, вы получаете какие-либо ошибки? Если да, возможно, какая-то другая ошибка внутри функции? –

+0

Я решил структурировать код по-другому, так что def plot_coords (self) должен делать заговор. теперь пытается получить доступ к локальной переменной из предыдущей функции в новой функции. другой проблема. – leermeester

 Смежные вопросы

  • Нет связанных вопросов^_^