Python - почему использование “сам” в классе?

LoginActivity.this 

указанная выше строка - это Activity, которая является Obwiveously Контекстом. Это используется, когда вы создаете некоторые AlertDialogs ... В некоторых местах его обязательным для использования контекста активности ...

getApplication()

То же самое, что требует метод текстового текста. Контекст и само приложение реализует Context

getApplicationContext()

, это наиболее предпочтительный способ, так как этот Context работает до тех пор, пока приложение не выключится.

getBaseContext()

этот контекст доступен для виджетов и представлений ..

Но все они дают объект Context и ничего больше.

80
задан ryeguy 24 January 2009 в 15:49
поделиться

3 ответа

A.x переменная класса . B self.x переменная экземпляра .

т.е. A x совместно используется экземплярами.

было бы легче продемонстрировать различие с чем-то, что может быть изменено как список:

#!/usr/bin/env python

class A:
    x = []

    def add(self):
        self.x.append(1)


class B:
    def __init__(self):
        self.x = []

    def add(self):
        self.x.append(1)


x = A()
y = A()
x.add()
y.add()
print "A's x:",x.x

x = B()
y = B()
x.add()
y.add()
print "B's x:",x.x

Вывод

x А: [1, 1]
B x: [1]

135
ответ дан Joe 5 November 2019 в 17:31
поделиться

A.x является переменной класса и будет совместно использован через все экземпляры A, если конкретно не переопределено в экземпляре. B.x является переменной экземпляра, и каждый экземпляр B имеет свою собственную версию его.

я надеюсь, что следующий пример Python может разъясниться:


    >>> class Foo():
    ...     i = 3
    ...     def bar(self):
    ...             print 'Foo.i is', Foo.i
    ...             print 'self.i is', self.i
    ... 
    >>> f = Foo() # Create an instance of the Foo class
    >>> f.bar()
    Foo.i is 3
    self.i is 3
    >>> Foo.i = 5 # Change the global value of Foo.i over all instances
    >>> f.bar()
    Foo.i is 5
    self.i is 5
    >>> f.i = 3 # Override this instance's definition of i
    >>> f.bar()
    Foo.i is 5
    self.i is 3
22
ответ дан TerrorBite 5 November 2019 в 17:31
поделиться

Так же, как примечание стороны: self на самом деле просто случайным образом выбранное слово, которое все используют, но Вы могли также использовать this, foo, или myself или что-либо еще, что Вы хотите, это - просто первый параметр каждого не статический метод для класса. Это означает, что Word self не является конструкцией языка, но просто именем:

>>> class A:
...     def __init__(s):
...        s.bla = 2
... 
>>> 
>>> a = A()
>>> a.bla
2
53
ответ дан André 5 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: