Причина, по которой люди переопределяют метод ToString()
, состоит в том, чтобы иметь стандартное строковое представление вашего объекта, обычно для отображения пользователю или журналу или консоли, например:
Console.WriteLine(yourClassObject);
Если вы не переопределяете ToString()
, тогда его реализация по умолчанию должна вернуть полное имя вашего объекта, например:
YourNamespace.YourClassName
Изменяя унаследованную реализацию (из System.Object
), тогда вы можете сделать более приятное (чтение: более красивое) представление, например:
public override string ToString()
{
return String.Format("This instance of my object has the following: Name = {0}, Number = {1}, Date = {2}, Salary = ${3}", _name, _number, _date, _salary);
}
Сравните с itertools.chain
a = [1,2,3,4]
b = [5,6,7,8]
c = [a, b]
itertools.chain(a, b) # 1 2 3 4 5 6 7 8
itertools.chain(c) # [1, 2, 3, 4] [5, 6, 7, 8]
itertools.chain(*c) # 1 2 3 4 5 6 7 8
# or chain specifically has a more-legible version of this
itertools.chain.from_iterable(c) # 1 2 3 4 5 6 7 8
Обратите внимание, что some_function(*[a, b, c])
совпадает с some_function(a, b, c)
. Это называется распаковкой аргументов.