human
I am working on the file "Section 1 - Core Python/Chapter 09 - Classes & OOPS/01_Classes_and_OOPS.ipynb".
The first task is:
Instead of using the normal statements to access attributes, you can use the following functions −
getattr
: to access the attribute of the object
The getattr(obj, name[, default])
: to access the attribute of object.
The hasattr(obj,name)
: to check if an attribute exists or not.
The setattr(obj,name,value)
    : to set an attribute. If attribute does not exist, then it would be created.
The delattr(obj, name)
    : to delete an attribute.
Properties
Sometimes you want to have an attribute whose value comes from other attributes or, in general, which value shall be computed at the moment. The standard way to deal with this situation is to create a method, called getter, just like I did with get_entry().
In Python you can "mask" the method, aliasing it with a data attribute, which in this case is called property.
Can you write Python program for it?

Give me a the Python program you requested?
assistant
#Here is the Python program you requested.

class Book(object):
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def get_entry(self):
        return "{0} by {1}".format(self.title, self.author)

    entry = property(get_entry)

b = Book(title="Pawn of Prophecy", author="David Eddings")
print(b.entry)