Форум геймеров и читеров 4cheaT
Под навигацией
Закрытая тема.
  1. Cтатус:
    Оффлайн
    Регистрация:
    15.06.2015
    Сообщений:
    68
    Благодарностей:
    45
    Мнения:
    11
    Репутация:
    24 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    F.A.Q. Вопросы и ответы. Python и Python в WoT

    Немного отвлеченный вопрос из области моих незнаний.

    Расскажите пожалуйста про файлы CameraNode.pyc и __init__.pyc которые также присутствуют и в этом моде.

    Дело в том, что эти файлы присутствуют и в других модах и модпаках, которые я устанавливаю. Эти файлы, как я заметил, имеют разный размер, сталобыть они разные.

    Моды я могу устанавливать в разном порядке, скажем, сперва на основе какого то модпака я закидываю все скопом, а потом добавляю отдельные моды. Файлы с одинаковыми именами затираются. И в каком бы я их порядке не ставил на работоспособность модов это не влияет (я не замечаю разницы).

    Как это работает и как правильно с ними поступать?
     
    Последний раз редактировалось Eraserhead; 2015-08-06 в 17:17.
    3 пользователя(ей) сказали cпасибо:
    ArtyKiller (2015-12-16), Patriot_42 (2015-08-07), Strell (2015-11-27)
  2. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое

    Это файлы загрузчики. Они могут отличаться по размеру, но функционально они делают одно и то же. __init__.pyc, например, содержит всего одну команду на питоне pass, что означает - "ничего не делать", но чтоб из текущей папки загружались скрипты этот файл необходим. CameraNode.pyc содержит команды загрузки модов из папки mods, в содержимом могут быть вариации (отсюда разный размер), но суть одинакова. Поэтому не имеет значению из какого источника вы загрузите эти файлы, главное чтоб они присутствовали. Более того, если они уже есть, то не обязательно их копировать.
     
    8 пользователя(ей) сказали cпасибо:
    Cep)l( (2015-08-13), DragonWR (2016-09-11), Eraserhead (2015-08-07), Patriot_42 (2015-08-07), RomaStill (2015-08-14), Дмитрий 1980 (2016-12-26), иван лапший (2015-08-06), Юзверь (2015-12-02)
  3. Cтатус:
    Оффлайн
    Регистрация:
    10.06.2015
    Сообщений:
    157
    Благодарностей:
    83
    Мнения:
    47
    Репутация:
    110 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Зорро, а можно мне тогда тоже? )
    Я пока только начал и сейчас у меня первый затык после бинарных операций.

    вот тут

    class Animal(object):
    def __init__(self,name):
    self.name = name
    zebra = Animal("Jeffrey")

    print zebra.name


    1) класс объект - определяет объект как объект, в смысле, как юнит, способный хранить и значение и функции, либо же имеет какой-то еще смысл?
    2) ок я понимаю что в классе я определяю функцию, которая принимает два аргумента. Но почему далее ниже стоит self.name = name? Что это значит? Правое name - это второй аргумент? Или слева стоит первый аргумент.второй аргумент, а справа яхз что?
    3) и в конце концов - ок, zebra.name вызывается примерно также, как dict.items. Но почему именно так... Где указано что написав zebra.name я получу именно Jeffrey?

    Короче я запутался и буду о-очень благодарен за объяснение ) Или ссылку.

    Я знаю: списки, словари, функции, интеграцию библиотек, бинарные операции
    Остальное пока не трогал. очень извиняюсь за нищенскую терминологию, к сожалению пока путаюсь в понятиях.
     
    Последний раз редактировалось Пешеход; 2015-08-06 в 19:29.
  4. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    Ничего сложного.
    self - нужен, чтоб иметь возможность обращаться к самому себе, т.е. self - это объект собственный и идентичен Animal в данном контексте. self кстати - просто принятая форма, вместо self можно использовать и другие названия, например если self заменить на selfy, то это тоже сработает. Если использовать декоратор @ staticmethod, то можно вообще без первого аргумента обойтись, а к методу обращаться через имя объекта, будет выглядеть так:

    PHP код:
    class Animal:
        
        @ 
    staticmethod
        def __init__
    (name):
            
    Animal.name name

    zebra 
    Animal("Jeffrey")

    print 
    zebra.name 
    и кстати (object) можно опустить. В питоне всё object по умолчанию.

    "Где указано что написав zebra.name я получу именно Jeffrey? "
    а именно в строке self.name = name и указано.

    вы передали через метод __init__ классу Animal (он же self внутри себя) аргумент (строка "Jeffrey") и присвоили его методу name, поэтому у вас zebra.name = Animal.name (self.name внутри класса) содержит строку "Jeffrey"

    Вот так всё просто.

    ЗЫ. Надо только тему другую для таких вопросов создавать
     
    Последний раз редактировалось ZorroJan; 2015-08-06 в 20:36.
    6 пользователя(ей) сказали cпасибо:
    Cep)l( (2015-08-13), marich.d (2015-12-16), Дмитрий 1980 (2016-12-26), иван лапший (2015-08-06), Пешеход (2015-08-06), Юзверь (2015-12-02)
  5. Cтатус:
    Оффлайн
    Регистрация:
    10.06.2015
    Сообщений:
    157
    Благодарностей:
    83
    Мнения:
    47
    Репутация:
    110 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Это у вас просто, а я весь день гугл мучаю. Всё понял наконец-то. Вернее, почти всё, но это я сейчас добью манами ))
    Спасибо!

    ЗЫ. а подфорум же есть по вопросам о питоне, просто я подумал, эта информация не будет сильно ценной для последующих разборок в нём )
     
  6. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    F.A.Q. Вопросы и ответы. Python и Python в WoT

    Решил создать тему в формате FAQ, для тех кому интересно как работают моды и что может Питон, ну и обо всём, что связано с игровым движком WOT. Задавайте вопросы, смогу отвечу.
     
    12 пользователя(ей) сказали cпасибо:
    Показать/Скрыть список поблагодаривших
  7. Cтатус:
    Оффлайн
    Регистрация:
    11.02.2015
    Сообщений:
    19
    Благодарностей:
    8
    Мнения:
    0
    Репутация:
    5 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Какой софт нужен для написания мода?
     
    Пользователь сказал cпасибо:
    Cep)l( (2015-08-13)
  8. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    [Ссылки могут видеть только зарегистрированные пользователи. ] - достойный, бесплатный продукт, который, на данный момент, лучше всего приспособлен для написания, редактирования и обфусцирования скриптов (модов) на Python. Более того, он написан специально для этих целей.
     
    8 пользователя(ей) сказали cпасибо:
    Alex0307 (2015-11-01), Boboshka (2015-12-30), Cep)l( (2015-08-13), HEIS_NBERG (2015-08-07), MABPEX58 (2015-08-21), Wildhearts (2017-04-28), ПАЛЫЧ (2015-08-07), Юзверь (2015-12-02)
  9. Cтатус:
    Оффлайн
    Регистрация:
    13.04.2015
    Сообщений:
    1,589
    Благодарностей:
    2,850
    Мнения:
    640
    Репутация:
    804 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Вот посмотри:
    http://4cheat.ru/showthread.php?t=39918
     
    Пользователь сказал cпасибо:
    Eraserhead (2015-08-14)
  10. Cтатус:
    Оффлайн
    Регистрация:
    10.06.2015
    Сообщений:
    157
    Благодарностей:
    83
    Мнения:
    47
    Репутация:
    110 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Ну короче. Я получил RHCE. И теперь могу вернуться к питону. Еще разок про классы:


    PHP код:
    class Animal(object):
        
    """Makes cute animals."""
        
    is_alive True
        def __init__
    (selfnameage):
            
    self.name name
            self
    .age age

     
    # Add your method here!

        
        
    def description(self):
            print 
    self.name
            
    print self.age
            
    hippo 
    Animal("Hujak"1239)
    hippo.description() 
    Почему я должен использовать print self.name а не print Animal.name?
     
    Последний раз редактировалось Пешеход; 2015-08-14 в 15:31.
  11. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    На самом деле это одно и тоже, но практически принято писать self. В этом случае вы сможете переименовать класс без последствий.
     
    2 пользователя(ей) сказали cпасибо:
    Пешеход (2015-08-14), Юзверь (2015-12-02)
  12. Cтатус:
    Оффлайн
    Регистрация:
    10.06.2015
    Сообщений:
    157
    Благодарностей:
    83
    Мнения:
    47
    Репутация:
    110 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Traceback (most recent call last):
    File "python", line 16, in <module>
    File "python", line 11, in description
    AttributeError: type object 'Animal' has no attribute 'name'

    :(

    Это если писать def description(self):
    print Animal.name
    print Animal.age
     
  13. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    Ты определяешь класс как self в строке def description(self) и работаешь с ним
    PHP код:
        def description(self):
            print 
    self.name
            
    print self.age 
    а можешь написать хоть так:
    PHP код:
    class Animal(object):
        
    """Makes cute animals."""
        
    is_alive True
        def __init__
    (selfnameage):
            
    self.name name
            self
    .age age

     
    # Add your method here!


        
    def description(selfyrius):
            print 
    selfyrius.name
            
    print selfyrius.age

    hippo 
    Animal("Hujak"1239)
    hippo.description() 
    и будет работать
     
    Пользователь сказал cпасибо:
    Пешеход (2015-08-14)
  14. Cтатус:
    Оффлайн
    Регистрация:
    10.06.2015
    Сообщений:
    157
    Благодарностей:
    83
    Мнения:
    47
    Репутация:
    110 [+/-]
    Баланс:
    0
    Сделки:
    0 Отзывов
    Новое
    Да, понятно, это обхяснено в учебнике. Мне не понятно, почему метод принимает первый аргумент - self, его значение в виде класса, но далее я могу работать только с аргументом, а с его значение напрямую не могу.

    Для меня self = Animal. А раз это значение уже есть в методе и один раз он смог с ним поработать, то я предполагаю, что смогу и дальше. Но не могу.

    Скажем тут:

    variable1 = "a"
    variable2 = "b"

    variable3 = variable1

    Далее мне не придется каждый раз для вывода "a" ссылаться на variable3, я с тем же успехом могу и с variable1 работать.


    Я пытаюсь понять, что на самом деле делает передача аргумента self (или аргумента с любым другим именем на 1 месте, как вы заметили), зачем оно нужно в описании класса.

    Я не тупой, правда ))
     
  15. Cтатус:
    Оффлайн
    Регистрация:
    15.02.2014
    Сообщений:
    3,363
    Благодарностей:
    8,897
    Мнения:
    1379
    Репутация:
    2139 [+/-]
    Баланс:
    1200
    Сделки:
    0 Отзывов
    Новое
    вот вариант без первого аргумента:
    PHP код:
    class Animal(object):
        
    """Makes cute animals."""
        
    is_alive True
        
    [MENTION=16006]sTa[/MENTION]ticmethod
        def __init__
    (nameage):
            
    Animal.name name
            Animal
    .age age

     
    # Add your method here!


        
    [MENTION=16006]sTa[/MENTION]ticmethod
        def description
    ():
            print 
    Animal.name
            
    print Animal.age

    hippo 
    Animal("Hujak"1239)
    hippo.description() 
    оно нужно чтоб определить переменную для последуюцего обращения. Дело в том, что обычная переменная работает только внутри метода и уничтожается за его пределами. Для работы внутри класса она должна быть отпределена внутри его самого - это делается с помощью self , то же касается и методов. Все они работают по одному принципу, т.к. они все объекты. Но... правило объектности подразумевает ограничения использования всего того, что создано в объекте, определено и работает только внутри его, если хочешь использовать что-то выше, то его необходимо и определить выше. Простая иерархическая система.
     
    Последний раз редактировалось ZorroJan; 2015-08-14 в 19:32.
Закрытая тема.
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Похожие темы
Ответов
Последнее сообщение
  1. Ответов:
    0
    Cheat_by_APiM
    2016-04-20 22:57
  2. Вопросы по программированию модификаций на Python

    ZorroJan, Вопросы по программированию на Python
    Ответов:
    122
    ZorroJan
    2015-10-25 23:53
  3. Python 2.7

    analogopatom, Вопросы по программированию на Python
    Ответов:
    5
    analogopatom
    2015-07-18 13:03
  4. python

    CTHUTQ_SI, Вопросы по модам World of Tanks
    Ответов:
    4
    CTHUTQ_SI
    2014-09-30 23:36
Форум геймеров в Рейтинг@Mail.ru