, :
class Animal(object):
def __init__(self, name):
self.name = name
def __str__(self):
return '{}: {}'.format(type(self).name, self.name)
class Cat(Animal):
name = 'Cat'
class Dog(Animal):
name = 'Dog'
(, , ) "" (.. -, , Google, __init_subclasses__).
Python 2, 3:
>>> cat = Cat('Micka')
>>> print(cat)
'Cat: Micka'
classproperty, . , - animal_name:
class Animal(object):
@classproperty
def animal_name(cls):
return cls.__name__
def __init__(self, name):
self.name = name
def __str__(self):
return '{}: {}'.format(self.animal_name, self.name)
class Cat(Animal):
pass
class Dog(Animal):
animal_name = 'Doggo'
:
>>> dog = Dog('Mike')
>>> cat = Cat('Bob')
>>> str(dog)
'Doggo: Mike'
>>> str(cat)
'Cat: Bob'