Форум сайта python.su
0
Ясно, спасибо. То есть чтобы определить аттрибуты непосредственно для объекта, это нужно делать во внутреннем методе через self. Извините за тупление 
Офлайн
568
vaultТы удивишься
это нужно делать во внутреннем методе через self.
class Foo(): def __init__(cheburashka): cheburashka.a=34 f=Foo() print f.a
Офлайн
0
FishHook
class Foo():
def __init__(cheburashka):
cheburashka.a=34
f=Foo()
print f.a
Офлайн
0
Снова вопрос возник:
class A: def __init__( self ): self.__value = 1 def getvalue( self ): return self.__value class B( A ): def __init__( self ): A.__init__( self ) self.__value = 2 b = B() print b.getvalue() print b._B__value
Офлайн
52
vault
Покопался с метаклассами, ужаснулся, впечатлился. Статьи отличные, спасибо.
Но возник вопрос: а зачем тут, в принципе, метаклассы? Собственно, ковыряя и переиначивая решение, достиг нужного результата проще:
class Reg(object):
_instances =
def __init__(self):
self._instances.append(self)
def __iter__(self):
return iter(_instances)
Офлайн
0
fata1ex
Боюсь, нужного результаты вы не достигли.
Офлайн
52
>>> class Reg(object): ... _instances = [] ... def __init__(self): ... self._instances.append(self) ... def __iter__(self): ... return iter(self._instances) ... >>> a, b, c = Reg(), Reg(), Reg() >>> for obj in Reg: ... print obj ... ... Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'type' object is not iterable
Отредактировано fata1ex (Июнь 27, 2012 20:14:10)
Офлайн
0
Да, что-то я напутал, видимо. Уже, честно говоря, не помню почему.
Офлайн
52
>>> class Reg(object): ... _instances = [] ... def __init__(self): ... self._instances.append(self) ... def __iter__(self): ... return iter(self._instances) ... >>> a, b, c = Reg(), Reg(), Reg() >>> for obj in Reg(): ... print obj ... <__main__.Reg object at 0x8fa3d4c> <__main__.Reg object at 0x8fbbdcc> <__main__.Reg object at 0x905bf2c> <__main__.Reg object at 0x905becc>
Офлайн