However, Python's dynamic nature also allows us to mix in functionality at runtime. The simplest technique for doing so is to modify the base classes of the given class, as described earlier. In the construction of internet applications, keeping domain classes separate from interface classes is generally a good idea. Domain classes represent the concepts, data and operations of a specific application. They are independent of operating system, user interface, database, etc.
Some writers refer to domain objects as business objects, model objects or problem space objects.
Keeping the domain and interface separate makes sense for various reasons. New interfaces can be constructed without modifying or rewriting the domain classes. In fact, multiple interfaces can be provided. Domain classes for a story publishing system might include Story, Author and Site. One interface for such a system could be a web site that allows users to create, edit, delete and publish these stories.