Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2009 14:49:11

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

module1.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import AlClk


def go():
print 'go'

a=AlClk.AlClkCls(14,9,2009,14,30,0,go)

x = a.RunSleep111(2) ##Error
File “G:\MainJob\module1.py”, line 48, in <module>
x = a.RunSleep111(2)
AttributeError: ‘AlClkCls’ object has no attribute ‘RunSleep111’
типа объект не имеет такого аттрибута, но ведь он есть то есть она



AlClk.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import threading
import datetime
import time


class AlClkCls(threading.Thread):
def __init__(self, dd, mm, yyyy, h, m, s, UserDef):
threading.Thread.__init__(self)

def AlarmClock(self):
print 'AlarmClock'
UserDef

def RunSleep111(self,g): ## вот же она, БЛИН!!!!!!!
time.sleep (2.0)
print 'lll'
return 0



Офлайн

#2 Сен. 16, 2009 08:46:30

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

В таком виде все будет работать.

File “G:\MainJob\module1.py”, line 48
Попробуй полностью привести код, может там что-то такое есть…



Офлайн

#3 Сен. 16, 2009 10:41:10

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

Да нет это весь код - больше ничего нет ни в том ни в другом модулях. Я ж эти модули просто для проверки создавал.



Офлайн

#4 Сен. 16, 2009 13:13:36

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

Все работает. Ты оба файла в одном каталоге держишь?



Отредактировано (Сен. 16, 2009 13:14:21)

Офлайн

#5 Сен. 16, 2009 15:33:58

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

В одном. Блин ща попробую в консоли запустить.

Запустил. Консоль сказала
Import Error про AlClk.

Попробовал запустить в портабельном PyScripter всё работает. Похоже глючил PyScripter который у меня непортабельный. Теперь буду перепроверять его сообщения в консоли. Но почему же Import Error? А можно писать полный путь к импортируемому файлу? Как правильно? Нигде такого примера не видел.



Отредактировано (Сен. 16, 2009 15:46:29)

Офлайн

#6 Сен. 16, 2009 15:52:00

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

GDK
А можно писать полный путь к импортируемому файлу? Как правильно?
Нет, не надо. Скорее всего у тебя смешение символов. Переименуй сначала файл, причем рекомендую это сделать маленькими латинскими буквами, например bdr.py , так не ошибешся.



Офлайн

#7 Сен. 16, 2009 17:28:34

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

Ну всё. Задолбало просто. Решил не просто переименовать файл, а скопировать на диск C:
Вот что получилось:
C:\nnn в ней два модуля module1.py, aaa.py
буквы точно латинские. Ну да ладно код в module.py изменил

import threading
import datetime

import string

##import aaa


##a=aaa.AlClkCls(14,9,2009,14,30,0,go)
##
##x = a.RunSleep111(2)

print "gggg"
запустил саму питон-консоль и execfile('C:\nnn\module1.py')

получил в консоли IOError No such file or directory: ‘C:\nnn\\module1.py’

запустил PyScripter, открыл в нём этот module1.py, проверил что открыт именно он - в синей полоске окна отображается путь к файлу запустил - всё ОК. Короче всё, сил нет. Это видать глюки какие то. Теперь сам буду пытать эту гадину пока не офигеет. Спасибо за ответы.


блин. запустил саму питон-консоль и execfile('C:/nnn/module1.py') просто от безысходности - так работает,
раскомментировал, запустил ещё разок ->>> ImportError: No module named aaa
В PyScripter всё работает. Может косяк из за того что версия питона портабельная? Пойду на обычной версии пробовать. Спасибо ещё раз за ответ. Ну интерпретатор со слэшами ооооочень удивил конечно.



Отредактировано (Сен. 16, 2009 17:57:01)

Офлайн

#8 Сен. 17, 2009 17:21:16

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

GDK
execfile('C:\nnn\module1.py')
Не забывай, что \n это символ перевода строки…. Используй прямые слеши…
Насчет портабельного питона, проблема скорее всего не в нем (только что проверял).
Когда ты делаешь execfile, твой каталог c:/nnn не является рабочим, и соответственно твои модули интерпретатору не видны.



Офлайн

#9 Сен. 18, 2009 09:41:42

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

GDK
AttributeError: ‘AlClkCls’ object has no attribute ‘RunSleep111’
С этим вроде прояснилось. Короче начал делать модуль .py и там несколько классов. Не работали 4 из 5-ти процедур в одном из классов с выдачей такого сообщения. А я этот модуль начал делать в PyScripter. В нем неудобно что нельзя как бы скрыть код тела процедуры, определения класса и т.п., поэтому я не закрыв его в PyScripter открыл его в NotePad++ и некоторые изменения вносил там. В результате в PyScripter отступы оказались знаками табуляции или ещё непонятно чем. PyScripter это не расценил как синтаксическую ошибку и просто видать игнорировал эти несколько процедур. Короче в PyScriptere переписал все отступы этих методов как пробелы ну и всё заработало как положено.
Про слэши понятно теперь. Хоть я и знал что значит \n, но даже на ум не пришло что execfile его тоже обрабатывает как перенос.
igor.kaist
Когда ты делаешь execfile, твой каталог c:/nnn не является рабочим, и соответственно твои модули интерпретатору не видны.
Это как я понял про ошибки импорта. Как же тогда будет правильно?



Офлайн

#10 Сен. 18, 2009 16:15:18

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

object has no attribute 'RunSleep111' за что так ругает?

GDK
Хоть я и знал что значит \n, но даже на ум не пришло что execfile его тоже обрабатывает как перенос.
Он обрабатывается везде как перенос, если только ты не сделаешь r'some\nstring'
GDK
Это как я понял про ошибки импорта. Как же тогда будет правильно?
Это не является ошибкой импорта. Пойми, когда ты делаешь execfile, то каталог не оказывается в sys.path, и твои модули не будут видны питону. Сделай сначала sys.path.append(YOUR_DIR), а потом exicfile
P.S. У комплетке с портабельным питоном идет нормальная запускалка скриптов, почему бы не использовать ее?!



Отредактировано (Сен. 18, 2009 16:15:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version