LINUX.ORG.RU
Ответ на: комментарий от DKorolkov

пример кода приведите, пожалуйста, что-то не получается:(
cat test.py

class test:
__id = 0
def __init__(self):
self.__id +=1
def id(self):
return self.__id
k = test()
print k.id()
k1 = test()
print k.id()


python test.py

1
1

anonymous
()
Ответ на: комментарий от anonymous

Дык тыж создаешь 2 экземпляра класса test. В каждом по счетчику ... :(

Делай счетчик вне класса, увеличивай при создании очередного экземпляра

anonymous
()
Ответ на: комментарий от anonymous

class test:
	count = 0
	
	class subtest:
		def __init__(self,*args):
			pass
		
	def __init__(self):
		pass
	
	def get(self,*args):
		self.count += 1
		return self.subtest(args)
	
	def get_count(self):
		return self.count
	
	
t = test()
print t.get_count()
a = t.get(1,2,3)
print t.get_count()
b = t.get(4,5,6)
print t.get_count()
print a
print b

anonymous
()
Ответ на: комментарий от anonymous

атрибут класса

class test:
  __id = 0
  def __init__(self):
    test.__id +=1 #  В вашем коде здесь создавался атрибут экземпляра
  def id(self):
    return self.__id

А если нужно в каждом экземпляре хранить его номер, то:
  def __init__(self):
    test.__id +=1 #  Увеличиваем счётчик
    self.__id = test.__id # Запоминаем в экземпляре.

Теперь под self.__id доступен атрибут экземпляра, а не класса.

DKorolkov
()
Ответ на: комментарий от anonymous

это не совсем то, хочется иметь тот же синтаксис для создания объекта, не замарачиваться, что надо вызывать get вместо test()

anonymous
()
Ответ на: комментарий от anonymous

class test: __id = 0 def __init__(self): test.__id +=1 self.__id = test.__id def id(self): return test.__id k = test() print k.id() k1 = test() print k.id()

python test.py 1 2

всё нормально:)

anonymous
()
Ответ на: комментарий от anonymous

cat test.py
class test:
__id = 0
def __init__(self):
test.__id +=1
self.__id = test.__id
def id(self):
return test.__id
k = test()
print k.id()
k1 = test()
print k.id()


python test.py
1
2

всё отлично работает. Спасибо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.