crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику Novak ::: Спасибо сказали: 28 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
14.11.2010, 18:16 Python, как внутри самого модуля узнать путь к нему?
У объекта модуля и можно спросить. Примерно вот так:
import some_module
print some_module.__file__

Работает для почти всех случаев. Подробнее в документации:

__file__ is the pathname of the file from which the module was loaded, if it was loaded from a file. The __file__ attribute is not present for C modules that are statically linked into the interpreter; for extension modules loaded dynamically from a shared library, it is the pathname of the shared library file.
Litkevich Yuriy,
14.11.2010, 14:45 Python, раскладывание модулей по разным папочкам
А что в нём? Если добавить src в pythonpath, то при импорте будет происходить поиск указанных модулей и в этой папке.
Потому конструкция
import group2.foo

Будет работать и в group1\foo.py
Вот пример main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from group1.foo import Cat
from group1.foo import Dog
from group1.foo import AnotherDog


cat = Cat("Murka")
cat.get_name()
dog = Dog("Barbos")
dog.get_name()
puppy = AnotherDog("Sharik")
puppy.get_name()

Всё импортируется, остальные файлы прикрепил.
Результат такой:

/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 /Users/novak/prog/src/main.py
__init__ in group1
__init__ in group2
Cat in group1.foo Murka
Dog in group2.foo Barbos
Dog in group1.bar Sharik
Litkevich Yuriy,
13.11.2010, 0:55 плохая книга про Питон
В своё время мне показалась не такой и плохой, кстати.
А вообще, конечно, Dive into Python - очень, имхо, неплохо.
Также можно разобрать Python Koans - мне очень понравился подход, прям проникаешься TDD
Litkevich Yuriy,
12.11.2010, 23:26 Python, вопрос о переменных
Не обязательно с таким именем, но если ты попытаешься объявить вообще без параметров - вылетит исключение. Питон хочешь или не хочешь, объект передаёт, а там уже ты разбирайся :)
А исключение, что характерно, появится только при попытке использовать эту функцию
class A(object):
    def func():
        print "Oh, no"

object =A()
print 'I am alive'
object.func()

Результат:

I am alive
Traceback (most recent call last):
File "/Users/novak/git/py_koans/py_koans/python 2/koans/test.py", line 10, in <module>
object.func()
TypeError: func() takes no arguments (1 given)


При передаче лишнего параметра также вылезет исключение:
class A(object):
    def func(self):
        print "Oh, no"

object =A()
print 'I am alive'
object.func()
object.func(1)

Результат:

I am alive
Oh, no
Traceback (most recent call last):
File "/Users/novak/git/py_koans/py_koans/python 2/koans/test.py", line 11, in <module>
object.func(1)
TypeError: func() takes exactly 1 argument (2 given)
Litkevich Yuriy,
12.11.2010, 23:15 Python, вопрос о переменных
Если это просто функция класса, то без "селфа" никак. У тебя в любом случае первым параметром передаётся текущий объект.
иначе просто неоткуда такой переменной, как self взяться.
Т.е. тебе нужно добавить его в объявление
...
    def mouseMoveEvent(self, event):
...
Litkevich Yuriy,
12.11.2010, 22:58 Python, вопрос о переменных
self - это просто переменная. в функциях класса она ссылается на объект, т.е. это не какое-то ключевое слово.
Другими словами, в функцию класса передаётся объект параметром, явно.
Через эту переменную можно получить доступ к полям объекта.
Область видимости этой переменной такая же, как и у всех, объявленных внутри текущей фукнции - это сама функция.
В рамках класса можно сделать вот так:
class A(object):
    def func1(self):
        var1 = 3 # здесь var1 и self - по сути, одинковые переменные. var1 ссылается на объект типа Int, self - на объект типа A
        self.val = var1 # тут мы полю val объекта типа A присваиваем значение переменной va1
    def func2(notself):
        print notself.val # тут у нас просто переменная, можно сказать, локальная, которая ссылается на объет типа A

object1 = A()
object1.func1() # вызываем сначала первую фукнцию, у объекта переменной object1 появляется поле val
object1.func2() # а тут выводится значение этого поля
# будем вызвать наоборот - получим ошибку, что у объекта нет атрибута val
object2 = A()
try:
    object2.func2() # у объекта пока нет поля val
except Exception as e:
    print e

Результаты:

3


Потому рекомендуется все используемые поля без крайней необходимости объявлять сразу явно, или в теле класса, или в конструкторе-функции __init__

Да, не забывай, что в питоне все переменные - ссылки на объекты. Потому и можно ими так легко играться.
Litkevich Yuriy,
3.12.2009, 19:39 Как правильно писать по-английски
Дело в том, что в английском в названиях принято многие слова писать с заглавных букв. Имхо, это именно отсюда пошло.
Подробнее - http://geevee.livejournal.com/39935.html
Sokoloff,
27.11.2009, 6:43 Создание "синонимов" почтового адреса
на gmail есть фишка с плюсами:
example@gmail.com
example+qqwe@gmail.com
example+qe@gmail.com
example+2de@gmail.com
По сути приходят на один ящик.
Я эту фичу при тестировании использовал, когда нужно было работать с регистрацией на сайте.
kwisp,
18.10.2009, 22:41 Помогите перевести термины
Чуть подправлю, имхо, так получше на вид.
Цитата
Встраиваемые системы, когда-то тихая заводь информационных технологий, сейчас проявляют себя как промышленность с многомиллиардным капиталом, которая уже проникает в наш быт и изменяет нашу жизнь.
AD,
5.10.2009, 20:15 статистика перевода
Ок, с сентября я именно правки себе в отдельный файл заношу. В августе могли быть косяки, постараюсь за этот год сделать tmx-файл исправлений.
Litkevich Yuriy,
6.9.2009, 13:22 статистика перевода
Сентябрь 2009

Заменил файлики, которые обычно перевожу в тестовом проекте для проверки общего файла, на документацию из 2009.01 - вот что получил:
Общее число сегменов: 497 467
Число уникальных сегментов: 227 264
Переведено уникальных сегментов: 71 667 (~31,53%)
Если брать по тем, что есть у нас в репозитории:
Общее число сегменов: 497 467
Число уникальных сегментов: 212 014
Переведено уникальных сегментов: 76 306 (~35,99%)

Есть предложение пока ориентироваться на то, что есть в репозитории.
Потом, после перевода большей части, просто будем смотреть наиболее свежую версию доков от нокии.
Litkevich Yuriy,
27.8.2009, 16:51 Помогите перевести термины
По идее само расширение называется всё жеComposite, Вот тут от nvidia инфа
Так что или "расширение Х протокола", или "расширение Composite", хотя и "расширение X Composite" можно, но это скорее в силу богатства русского языка.
AD,
23.7.2009, 15:37 Подарок на свадьбу
а я одному подарил надувной диван, чуть менее банально)
AD,
17.7.2009, 0:16 Помогите перевести термины
Цитата(Kagami @ 17.7.2009, 0:40) *
данных и он может расти без перераспределения всех данных при каждом вызове.

я бы заменил на
Цитата
данных, и он может расти без перераспределения внутренних данных при каждом изменении.

нет там про вызовы.
Litkevich Yuriy,
11.5.2009, 13:52 Помогите перевести термины
Цитата
Заметьте, что единственной специфичной для этого пользовательского виджета частью является имя класса.

Можно ещё сказать "единственной изменённой", т.е. подразумевалось, что только Plugin добавили в имя, а остальное оставили из примера.
Litkevich Yuriy,
19.4.2009, 0:21 floor+ceil
Ты походу делишь int на int, а потом пытаешься куда-то округлить?
У тебя заведомо будет 2, потому как ты уже в floor и ceil передаёшь просто двойку.
Приведение типов в любом виде спасёт отца русской демократии.
LE0N,
8.3.2009, 21:40 Объявление для Qt RTT
С олифантом я немного поигрался, но не очень получилось. Потому в этот раз по-старому обновил.
Litkevich Yuriy,
24.2.2009, 23:14 Помогите перевести термины
Цитата(Kagami @ 24.2.2009, 21:47) *
Стиль java реализует собственные метки кнопок ввиду упрямства Java по отношению к центрированному в окне содержимому также когда кнопка имеет иконку.

Почти согласен, мой вариант:
The java style implements its own push button label since Java-contrary to windows-center button contents also when the button has an icon.
Цитата
Стиль Java реализует собственные надписи в кнопках, так как Java плохо воспринимает центрированное относительно окна содержимое кнопки или иконку в ней.
alex977,
14.1.2009, 8:27 Объединение tmx-файлов
На страничке ресурсов программы OmegaT есть ссылка для скачивания java-сценария TMXMerger, предназначенного для объединения tmx-файлов.
Синтаксис у этого сценария очень простой:
Цитата
TMXMerger-1.0.jar <исходный файл 1> <исходный файл 2> <результирующий файл>

Например, при
Цитата
TMXMerger-1.0.jar source_1.tmx source_2.tmx project_save.tmx

Объединяются два файла source_1.tmx и source_2.tmx
В результирующем файле будут записаны все пары переводов, что были в первом и втором файле.
Если встретились разные переводы одного сегмента в исходных файлах, то все варианты будут записаны в результирующем файле. Получится запись примерно такого вида:
<tu>
         <tuv lang="EN-US">
            <seg>How to Build the ODBC Plugin on Windows</seg>
         </tuv>
         <tuv lang="RU-RU">
            <seg>Как собрать ODBC плагин под Windows</seg>
         </tuv>
         <tuv lang="RU-RU">
            <seg>Как собрать QMYSQL плагин под Windows</seg>
         </tuv>        
</tu>

После этого нужно вычистить этот файл от лишний дублирующих записей.
С этим справляется сама OmegaT. Если создать проект со всеми необходимыми файлами для перевода и подложить в него наш объединённый tmx-файл, то остаётся только запустить генерацию переведённых файлов, и лишние записи из нашего исходного файла перевода будут удалены. При этом сохраняется первая запись из встреченных.
Потому при объединении файл, который был передан первым в скрипт TMXMerger имеет больший приоритет в плане дублирования записей.

Мне кажется, что стоит ещё немного поэкспериментировать, в эту тему писать результаты этих опытов. После этого дополнить это руководство и выложить в вики и траке.
alex977, Litkevich Yuriy, Анна,
26.12.2008, 21:31 Помогите перевести термины
Тут подразумевается разница как в ссылочных типах и типах значений... Но вообще, у Qt в этом плане своя спицифика. Имхо, стоит как раз как ссылочный тип и тип значений перевести, ибо идентификатор тут совершенно ни при чём.
alex977,
4.11.2008, 19:26 QHttp и несколько IP в системе
С помощью этой функции - для конкретного сокета. Соответственно, получив информацию о всех доступных адресах, можно выбрать нужный и на нём повесить сокет.
Litkevich Yuriy,
14.9.2008, 13:46 CAT и TM
Цитата(Litkevich Yuriy @ 14.9.2008, 11:48) *
т.е. она при генерации переведенных документов вставляет сущьности (так как у alex977 было) ?

По идее, да. Алекс мне прислал изменённый файлик, где он это правил, я его вставил и всё перекопилил.
Litkevich Yuriy,
8.9.2008, 20:11 CAT и TM
Цитата(Litkevich Yuriy @ 7.9.2008, 5:27) *
апуск OmegaT из командной строки с параметром OmegaT.jar path/to/project и чтобы это приводило к открытию проекта (анализ как обычно) и затем принудительно (т.е. без помощи человека) исполнение команды "Создать переведенные документы" с последующим завершением работы.

В общем, можно попробовать. На йапапке, т.к. прикрепить не влезает по объёму.
Краткая инструкция: запускаем с параметром project-path=путь_до_папки_проекта
C:\dist\OmegaT.jar project-path=C:\test_omegat\test\
При этом происходит открытие проекта, создание переводов, закрытие проекта и закрытие программы. Внешних проявлений данного процесса быть не должно.
Если project-path не указан, то должно работать как обычно.
П.С. Встретил бы того, кто придумал так интергировать интерфейс и функционал да ещё и в разных потоках, плюнул бы в лицо.
Litkevich Yuriy,
6.8.2008, 15:24 Обновлен архив с переведенной документацией Qt.
На подходе еще часть переводов.. Думаю в августе-сентябре добить таки XML модуль.
void*,
2.8.2008, 9:38 Учебное пособие
*Рука сразу потянулась почему-то к оригинальной документации.
А там написано
Цитата
Try changing the LCD number to add more digits or to change mode (QLCDNumber::setMode()). You can even add four push buttons to set the number base.
You can also change the slider's range.

Тобишь нужно добавить четыре кнопки для выбора основания системы счисления (привет калькулятору с его hex oct bin dec). А также можно изменить диапазон значений, да и даже нужно при изменении основания.
Litkevich Yuriy,

2 страниц V   1 2 >
RSS Текстовая версия Сейчас: 17.10.2018, 19:28