__init__()
функция вызвана, когда объект создается. Это в порядке для вызова объекта __init__()
функционировать снова после его созданного?
instance = cls(p1=1, p2=2)
# some code
instance.__init__(p1=123, p2=234)
# some more code
instance.__init__(p1=23, p2=24)
почему кто-либо хотел бы звонить __init__()
на объекте, который уже создается?
хороший вопрос. я хочу повторно инициализировать поля экземпляра.
{
int a[10]={1,2,3,4,5,6,7,89,8,9};
int k=0,i,j,l;
int sum[36],max;
for (i=0;i<10;i++)
{
for (j=i+2;j<10;j++,k++)
sum[k]=a[i]+a[j];
}
max=a[0];
for(i=0;i<36;i++)
printf("sum[%d] is %d\n",i,sum[i]);
for(l=1;l<36;l++)
{
if(max>sum[l])
continue;
else
max=sum[l];
}
printf("%d is the max sum",max);
}
-121--3286721- Хорошо вызывать __ init __
несколько раз на объекте, если __ init __
закодирован с эффектом, который вы хотите получить (что бы это ни было). Типичный случай, где это происходит (таким образом, у вас был лучший код __ init __
соответственно!-), когда ваш класс __ новый __
метод возвращает случай класса: то, что делает причина __ init __
, чтобы быть названным на возвращенном случае (для того, что могло бы быть вторым, или двадцатым, разом, если вы продолжаете «перерабатывать» случаи через ваш __ новый __
!-).
Вы можете, но это вроде нарушать то, что __ init __
предназначено для этого. Многие Python действительно только что конвенция, поэтому вы могли бы также следовать тогда и ожидать __ init __
, чтобы его можно назвать только один раз. Я бы порекомендовал создать функцию под названием init
или сброс
или что-то, что устанавливает переменные экземпляра, используйте, что когда вы хотите сбросить экземпляр, и иметь __ init __
Просто позвоните init
. Это определенно выглядит больше вменяемого:
x = Pt(1,2)
x.set(3,4)
x.set(5,10)
Насколько я знаю, он не вызывает никаких проблем ( Редактирование: , как это предложено кошержевым использованием Super (...) .__ init __ (...)
), но я думаю, что наличие сброс ()
метод () и вызов его как в __ init __ ()
И когда вам нужно сбросить, будет очистить.