LINUX.ORG.RU
Ответ на: комментарий от isden

Прикольно. Да, в Питоне немало таких подводных камней :)

KRoN73 ★★★★★
()
Ответ на: комментарий от isden

> это типа нормально? f и g - это же разные экземпляры класса?

Что смущает-то? bar - атрибут класса, он один на всех. Так специально и объявлен.

<?php
class Foo
{
	private static $bar = array();

	public function __construct($x) {
		self::$bar[] = $x;
	}

	public function getBar() {
        	return self::$bar;
	}
}

$f = new Foo(42);
$g = new Foo(100);
print_r($f->getBar());
print_r($g->getBar());
?>

Желающие могут воспроизвести в С++ или даже в Джаве.

А вообще, рекомендую сначала выучить матчасть насчет __dict__, а потом идти обсуждать язык.

dccp
()
Ответ на: комментарий от isden

>>это типа нормально? f и g - это же разные экземпляры класса?

В том примере bar - это атрибут класса, а не экземпляра.

>>> class Bar:
...     def __init__(self, x):
...             self.bar = []
...             self.bar.append(x)

>>> f = Bar(42)
>>> g = Bar(100)
>>>
>>> f.bar, g.bar
([42], [100])

Turbid ★★★★★
()
Ответ на: комментарий от isden

Ну или аналог на плюсах:

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

class Foo {
public:
	static vector<int> bar;

	Foo(int x) {
		bar.push_back(x);
	}
};

vector<int> Foo::bar;

template<typename T>
void print_vector(const vector<T> &v) {
        copy(v.begin(), v.end(), ostream_iterator<T>(cout, " "));
	cout << endl;
}

int main(void) {
	Foo f = Foo(42);
	Foo g = Foo(100);
	print_vector<int>(f.bar);
	print_vector<int>(g.bar);

	return 0;
}

dccp
()
Ответ на: комментарий от isden

> это типа нормально?

Да, это нормально. bar - переменная класса, не экземпляра. Удивляет только первый раз, только из-за формы доступа через self.

tailgunner ★★★★★
()
Ответ на: комментарий от isden

и что не нормально? разве что непривычность синтаксиса лично для тебя, но это, извини, не аргумент

PayableOnDeath
()
Ответ на: комментарий от KRoN73

>Хотя, вот, уже сам придумал - а если массив будет Null?

Это как? Список (говорим о списках, массивы несколько другое в python) не может быть None (встроенного литерала Null нет в языке).

Вообще, по поводу join. Стоит лишь немного подумать (не всем по силам, я понимаю), и станет очевидно, что сделать его методом str самое разумное решение.

http://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinli...

anonymous4
()
Ответ на: комментарий от wfrr

>Ага, делаем в строке метод к последовательностям, к деревьям (отдельный же), к каждой структуре данных же.

Как ты себе представляешь последовательность, сджойненную деревом? И "каждой структурой"?

>Буэээ, про наследование питонофаги не в курсе, да?

Конечно не в курсе, куда им, убогим.

anonymous4
()
Ответ на: комментарий от vahvarh

>ни один здравомыслящий человек на нём программировать не будет

Fail. Практика показывает, что более чем успешно программируют.

>почему join является методом строки а не массива?

И только-то?

anonymous4
()
Ответ на: комментарий от anonymous4

>Как ты себе представляешь последовательность, сджойненную деревом? И "каждой структурой"?

Элементарно, нужно вывести все элементы дерева - обход в глубину, "каждой структурой" - N-мерный массив?

Покуда будешь сидеть и мусолить мозг на питон ты вообще отупеешь.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>нужно вывести все элементы дерева - обход в глубину, "каждой структурой" - N-мерный массив?

Твоя мысль столь легка, что слишком далеко упорхнула от исходного вопроса. Какое отношение деревья и N-мерные массивы имеют к исходной задаче "склеить последовательность строк через строковый разделитель"?

>Покуда будешь сидеть и мусолить мозг на питон ты вообще отупеешь.

О, да, научи меня жить! Расскажи мне... ну скажем... про обход в глубину (устраивается поудобнее).

anonymous4
()
Ответ на: комментарий от anonymous4

>"склеить последовательность строк через строковый разделитель"?

В этом твоя ошибка, склеивать можно не только строки. И твой мозг съел питон если ты не осиливаешь n-мерные массивы.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>твой мозг съел питон если ты не осиливаешь n-мерные массивы

Скучный ты.

anonymous4
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.