Давайте не забывать Главный Первый Java, который мог считать существенным первым шагом на этом языке или возможно шаге после учебных руководств онлайн Sun. Это является большим в целях схватывания языка кратко, при добавлении небольшого количества забавы, служении в качестве стартовой площадки для более всесторонних книг, уже упомянутых.
Sedgewick предлагает большой ряд на Алгоритмах, которые являются необходимой вещью, если Вы находите, что книги Knuth являются слишком всесторонними. Knuth в стороне, Sedgewick приносит серьезный подход к полю, и он предлагает свои книги в C, C++ и Java. Книги C++ могли использоваться backwardly на C, так как он не делает очень большое различие между этими двумя языками в его представлении.
Каждый раз, когда я работаю над C, , Справочник C:A, Harbison и Steele, идет со мной везде. Это кратко и эффективно будучи чрезвычайно полным созданием его бесценный (мне так или иначе).
Языки в стороне, и если этот поток должен стать дежурным для ссылок, в которых я думаю, что он возглавляет тот путь из-за количества стабильных вкладов, включайте Регулярные выражения Освоения по причинам, я думаю, что большинство из нас знает..., некоторые также сказали бы, что regex можно считать языком самостоятельно. Далее, его полноценность в огромном количестве языков делает его неоценимым.
Я просто столкнулся с этой проблемой. У меня есть Многочлен класса (), и я определяю градиент, что я хотел бы возвратить функцию, если никакие аргументы или не оценивают, если существуют аргументы. Я хочу сохранить градиент как атрибут, таким образом, я не должен вычислять его каждый раз, когда я должен использовать его, и я хочу использовать @property, таким образом, атрибут градиента вычисляется лениво. Мое решение состояло в том, чтобы определить класс Градиент с определенным методом вызова для свойства выпускника Многочлена для возврата.
@property
def grad(self):
"""
returns gradient vector
"""
class Gradient(list):
def __call__(self, *args, **kwargs):
res = []
for partial_derivative in g:
res.append(partial_derivative(*args, **kwargs))
return res
g = Gradient()
for i in range(1, len(self.term_matrix[0])):
g.append(self.derivative(self.term_matrix[0][i]))
return g
И затем у меня есть следующая тестовая передача успешно:
def test_gradient(self):
f = Polynomial('x^2y + y^3 + xy^3')
self.assertEqual(f.grad, [Polynomial('2xy + y^3'), Polynomial('x^2 + 3xy^2 + 3y^2')])
self.assertEqual(f.grad(x=1, y=2), [12, 25])
f = Polynomial('x^2')
self.assertEqual(f.grad(1), [2])
Так, для этой проблемы мы могли попробовать:
class A:
@property
def x(self):
class ReturnClass(int):
def __call__(self, neg=False):
if not neg:
return 5
return -5
return ReturnClass()