Вот что он делает: содержимое первого экземпляра класса (в данном случае mok1) заполняется водой. Я могу заполнить его бесконечно, но как только будет создан первый экземпляр, я смогу заполнить только этот экземпляр и выдать ошибку любому другому экземпляру. Есть ли более чистый и лучший способ сделать это? Теперь я использую разницу в классе var и var экземпляра, что сбивает с толку людей, потому что это разные переменные. Спасибо ребята;)
class mok:
_content = 'EMPTY'
def __init__( self flavour ):
self.flavour = flavour
def fill( self ):
if mok._content == 'EMPTY':
self._content = '1'
mok._content = 1
if self._content == '1':
print 'Filling mok!'
else:
print 'Error: This is a different mok!'
mok1 = mok( 'thea' )
mok2 = mok( 'coffee' )
mok1.fill()
mok1.fill()
mok2.fill()
mok1.fill()
выход:
Filling mok!
Filling mok!
Error: This is a different mok!
Filling mok!
Я нашел решение:
class mok:
_mok_with_water = 0
def __init__( self, color, flavour ):
self.color = color
self.flavour = flavour
def printcolor( self ):
print 'Mok color =', self.color
print 'Mok flavour =', self.flavour
def fill( self ):
self.printcolor()
if mok._mok_with_water == 0:
mok._mok_with_water = self
if mok._mok_with_water == self:
print 'Filling mok!'
else:
print 'Error: This is a different mok!'
def empty( self ):
if self == mok._mok_with_water:
mok._mok_with_water = 0
mok1 = mok( 'geel', 'thee' )
mok2 = mok( 'zwart', 'koffie' )
mok1.fill()
mok1.fill()
mok2.fill()
obj = mok1.empty()
obj = mok2.fill()
obj = mok1.fill()