16.13. Multiple Choice QuestionsΒΆ
- from party import PartyAnimal
- This is a necessary step to import the PartyAnimal class, but it does not define a class CricketFan that inherits from PartyAnimal
- class CricketFan(PartyAnimal)
- Correct! CricketFan inherits from PartyAnimal.
- an = PartyAnimal()
- This only creates an instance of the PartyAnimal class called an.
- CricketFan = PartyAnimal()
- This would create an instance of the PartyAnimal class called CricketFan.
Q-1: In which of the following does the CricketFan
class correctly inherit from the PartyAnimal
class?
- puppy = Dog("Jamie")
- This uses the constructor function to create an object with arguments.
- dog = Dog("Jamie")
- The instance can have a similar name to the class. This uses the constructor function to create an object with arguments.
- jamie = Dog()
- This is correct and does not have arguments.
- pupper = new Dog("Jamie")
- The 'new' is incorrect
Q-2: Which of the following does not correctly create an object instance?
- Sally
- This prints the value of the name attribute for person1.
- Louise
- 'Louise' is the 'name' of person2 but we are calling the person1 instance.
- Sally Louise
- It only prints the value of name for one instance.
- person1
- The output is not the name of the instance.
Q-3: What does the following code output?
class People():
def __init__(self, name):
self.name = name
def namePrint(self):
print(self.name)
person1 = People("Sally")
person2 = People("Louise")
person1.namePrint()
- person1 and person2 are two different instances of the People class.
- Since two different objects were created, this is correct.
- The __init__ method is used to set initial values for attributes.
- __init__ is an optional method in classes that is used to set initial values for objects.
- 'self' is not needed in def namePrint(self):
- 'self' is used to represent the current instance of the class.
- person2 has a different value for 'name' than person1.
- Since they are two different instances, they cannot access each other and have different initial values too
Q-4: Which of the following statements is incorrect about the following code?
class People():
def __init__(self, name):
self.name = name
def namePrint(self):
print(self.name)
person1 = People("Sally")
person2 = People("Louise")
person1.namePrint()
- One of the benefits of object-oriented programming is that it can hide complexity.
- This is true, while using an object, we need to know how to use the object class but not how it works internally.
- A class contains functions as well as the data that is used by those functions.
- This is true as an class can contain functions as well as data that is used by those functions.
- Constructor methods are required to initialize an object and destructor methods are required to destroy the object when no longer required.
- This is false, a constructor is optional can be used to set initial values for an object and python automatically destroys any object if its reference count changes to a zero without needing a destructor.
- A powerful feature of object-oriented programming is the ability to create a new class by extending an existing class.
- This is true, we can extend a 'parent' class to create a new 'child' class and the new class has access to its functions and can override them if needed.
Q-5: Which of the following statements is not true about object-oriented programming?
- class
- The class keyword defines the data that is in an object of a class and the functions that can be called on an object of the class.
- object
- An object is created using this template.
- Class
- The keyword is case-sensitive
- instance
- An instance is a single occurrence of an object created when the object is initialized.
Q-6: The _________ keyword defines a template indicating the data that will be in an object of the class and the functions that can be called on an object of the class.
- class
- 'class' is a keyword that defines the template for objects of the class.
- def
- 'def' is used to define a function
- self
- 'self' is not a keyword, but by convention is used to refer to the current object
- init
- 'init' is not a keyword, but the __init__ method is created to initialize class variables.
Q-7: _________ is not a keyword, but by convention it is used to refer to the current instance (object) of a class.
- Grass type pokemon name is Bulbasaur Pokemon name is Charizard and type is Fire
- A child class can inherit functions from parent class and also override them.
- Pokemon name is Bulbasaur and type is Grass Pokemon name is Charizard and type is Fire
- The stringPokemon() functions is changed inside the GrassType class.
- Grass type pokemon name is Bulbasaur Grass type pokemon name is Charizard
- The stringPokemon() functions is only changed for GrassType class but remains unchanged in the original class.
- Error because the extending class has a stringPokemon() function which already exists.
- A class inherits functions from another class and override them in any way. Only the constructor class cannot be changed.
Q-8: What is the output of the following code?
class Pokemon():
def __init__(self, name, type):
self.name = name
self.type = type
def stringPokemon(self):
print(f"Pokemon name is {self.name} and type is {self.type}")
class GrassType(Pokemon):
# overrides the stringPokemon() function on 'Pokemon' class
def stringPokemon(self):
print(f"Grass type pokemon name is {self.name}")
poke1 = GrassType('Bulbasaur', 'Grass')
poke1.stringPokemon
poke1.stringPokemon()
poke2 = Pokemon('Charizard', 'Fire')
poke2.stringPokemon
poke2.stringPokemon()
- True
- The child class does not need access to the all the inner workings in parent class.
- False
- The child class knows how to use the parent class and its functions but not its data and the inner workings. The "super" command can come in handy here.
Q-9: True or False? In order to extend a class, the new class should have access to all the data and inner workings of the parent class.
- def __init__(title, author):
- Unless a class method is static, 'self' is explicitly used to represent current instance.
- def __init__(self, title, author):
- "self" is used to represent an instance of the given class and the parameters will be used to initialize variables.
- def __init__():
- At minimum, the "self" parameter is needed to represent an instance of the given class.
- __init__(self, title, author):
- The reserved word "def" is necessary to define a method.
Q-10: Which of the following is the correct way to define an initializer method?