Я php coder, пытаясь попасть в мир python, и это очень сложно для меня.Статические методы PHP и Python в объектах, два разных мира ...?
Самое большое использование статических методов в php - это автоматический построитель экземпляра. Нет необходимости объявлять объект, если вам нужно это один раз, в каждом файле (или с различными конструкторами Params, в одной строке)
<?php
class Foo {
function __constructor__(){
$this->var = 'blah';
}
public static function aStaticMethod() {
return $this->var;
}
}
echo Foo::aStaticMethod();
?>
мы можем вызвать конструктор из статического метода не так ли? и мы можем получить доступ ко всему в классе, так как это был бы простой метод ... у нас даже может быть STATIC CONSTRUCTOR в php-классе и называть его так: Object :: construct() -> myMethod(); (каждый раз передавать разные параметры)
но не в python ???? @staticmethod делает метод в классе простой функцией, которая ничего не видит?
class socket(object):
def __init__(self):
self.oclass = otherclass()
print 'test' # does this constructor called at all when calling static method??
@staticmethod
def ping():
return self.oclass.send('PING') # i can't access anything!!!
print Anidb.ping()
Я ничего не могу получить доступ из этого бога проклят статический метод, это как отдельная функция или что-то вроде этого .. ??
Возможно, я использую неправильный декоратор? Может быть, есть что-то вроде предложений php со статическими методами в python?
1) Пожалуйста, расскажите, почему статические методы изолированы 2) Расскажите, пожалуйста, как сделать то же поведение, что и статические методы php. 3) Пожалуйста, скажите мне альтернативное практическое использование этого, если поведение php статических методов - это плохо.
P.s. цель всего этого состоит в том, чтобы писать как можно меньше кода. P.p.s Значительный комментарий кода примера оценивается
Спасибо.
Ваш код является неполным и неправильно. Как вы создаете свои «статические» методы в Python? – 2010-11-30 13:54:31
Это также не работает в php, по крайней мере, не в php> 5.2. Но я никогда не слышал об этом в более ранних версиях. Когда я запускаю этот скрипт, я получаю «PHP Fatal error: использование $ this, если не в контексте объекта», что имеет смысл ... – enricog 2010-11-30 14:07:28
Вы имеете в виду, что вы не можете получить доступ к нестационарным методам из статического метода в php? – holms 2010-11-30 14:11:52