Я очень новичок в программировании и начал изучать питон. Можете выглядеть очень глупым вопросом, поэтому, пожалуйста, простите мое невежество. Рассмотрим следующий фрагмент кода:Понимание атрибутов класса python
class Test1:
bar = 10
def display(self,foo):
self.foo=foo
print "foo : ",self.foo #80
def display1(self):
print "bar: ", self.bar #10
print "again foo: ", self.foo #80
if __name__ == '__main__':
test1 = Test1()
test1.display(80)
test1.display1()
print test1.bar #10
print test1.foo #80
Я хочу, чтобы понять, в чем разница между использованием Foo и бар (ВПР, где мы определили их), как в рамках мудрыми они одинаково доступны во всех местах по сравнению с друг друга, и только разница в том, что внутри есть функция, а другая - внутри класса, но оба они все еще являются «экземплярами». Так что это хорошая практика?
Кроме того, если я немного изменить функцию отображения, как показано ниже:
def display(self,foo):
self.foo=foo
foo = foo
print "self.foo : ",self.foo
print "foo : ",foo
Может кто-то пожалуйста, объясните, как питон видит это, как и в чем разница/значение этого ключевого слова self
приносящей между двумя foo
.
Нет, 'bar' является * не * переменной экземпляра. Эти два очень разные, поэтому речь идет не о «хорошей практике». Речь идет о том, что подходит для вашей ситуации, потому что они служат различным целям. – phant0m
Также 'self.bar' работает, потому что имя' bar' сначала выполняется в пространстве имен экземпляра, а затем в классе. Тот факт, что 'self.bar' работает, не всегда * означает, что' bar' является переменной экземпляра. – ersran9