argo951385
?>

Для чего в языке программирования python, при объявлении методов класса, в качестве первого аргумента указывается ключевое слово self (указатель на собственный класс) ? могут ли быть случаи, когда вместо self указывается другой класс? (вот моя догадка: это нужно для реализации наследования, но как именно еще вопрос)

Информатика

Ответы

AOS2015
Первым аргументом каждого метода класса, включая __init__, всегда является текущий экземпляр класса. Общепринято всегда называть этот аргумент self.
Как this в С++.
Обычный метод
class MyClass(object):
      def mymethod(self, x):
             return x == self._x

Классовые методы в Python занимают промежуточное положение между статическими и обычными. В то время как обычные методы получают первым параметром экземпляр класса, а статические не получают ничего, в классовые методы передается класс. 
>>> class A(object):
           def __init__(self, int_val):
                 self.val = int_val + 1
                     @classmethod
                     def fromString(cls, val):
                     # вместо self принято использовать cls                           
                   return cls(int(val))
aynaakzhigitova
Program Project1;

var m:array [0..14] of integer; i:integer;

function IsPositive(a:integer):boolean;
begin
  result:=(a>-1);
end;

procedure work;
var min, max, count:integer;
begin
  count:=0;
  min:=m[0];
  max:=0;
  for i:=0 to 14 do begin
    if IsPositive(m[i]) then begin
      inc(count);
      if m[i]>max then max:=m[i];
      if m[i]<min then min:=m[i];
    end;
  end;
  writeln('MAX: ', max);
  writeln('MIN: ', min);
  writeln('Count: ', count);
end;

begin
  for i:=0 to 14 do begin
    write('n: ');
    readln(m[i]);
  end;

  work;

  readln;
end.
zolotayaoxana1982
Program Project1;

var m:array [0..14] of integer; i:integer;

function IsPositive(a:integer):boolean;
begin
  result:=(a>-1);
end;

procedure work;
var min, max, count:integer;
begin
  count:=0;
  min:=m[0];
  max:=0;
  for i:=0 to 14 do begin
    if IsPositive(m[i]) then begin
      inc(count);
      if m[i]>max then max:=m[i];
      if m[i]<min then min:=m[i];
    end;
  end;
  writeln('MAX: ', max);
  writeln('MIN: ', min);
  writeln('Count: ', count);
end;

begin
  for i:=0 to 14 do begin
    write('n: ');
    readln(m[i]);
  end;

  work;

  readln;
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Для чего в языке программирования python, при объявлении методов класса, в качестве первого аргумента указывается ключевое слово self (указатель на собственный класс) ? могут ли быть случаи, когда вместо self указывается другой класс? (вот моя догадка: это нужно для реализации наследования, но как именно еще вопрос)
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

grazia2017
kisuhakisa
coffee2201
elozinskaya
zvanton
stratocasterr34
msangelika1010
viz-art-pnz1664
ekatef45
spodobnyi
tashovairina
prianik6
supply1590
zubareva23338
dimalihachew