48 explicit Labrador(
const std::string &_name,
int _excitement = 9001)
55 sound =
"iyiyiyiyiyi";
57 std::string
bark()
const {
return Dog::bark() +
" and runs in circles"; }
62 std::string
purr()
const {
return "mrowr"; }
67 std::string
purr()
const {
return "mrrrRRRRRR"; }
71 std::vector<std::unique_ptr<Animal>>
ret;
121 template <
typename itype>
123 static const void *
get(
const itype *src,
const std::type_info *&
type) {
131 py::class_<Animal>(
m,
"Animal").def_readonly(
"name", &
Animal::name);
132 py::class_<Dog, Animal>(
m,
"Dog")
133 .def(py::init<std::string>())
136 py::class_<Labrador, Dog>(
m,
"Labrador")
137 .def(py::init<std::string, int>(),
"name"_a,
"excitement"_a = 9001)
139 py::class_<Chihuahua, Dog>(
m,
"Chihuahua")
140 .def(py::init<std::string>())
142 py::class_<Cat, Animal>(
m,
"Cat").def(py::init<std::string>()).def(
"purr", &
Cat::purr);
143 py::class_<Panther, Cat>(
m,
"Panther")
144 .def(py::init<std::string>())