我对python的理解是无所不能的...一直在用自己阅读看似百种不同的方法来解决这个问题。下面我分配了作业说明和我的代码...截至目前,我无法使用' getAnimal()'命令。我不确定它的作用或工作原理。提前致谢:D
作业说明:"为一个班级动物园写一个班级定义。'它应该有动物类型,食草动物/食肉动物/杂食动物以及内/外的实例变量。它还应该有一个getAnimal()方法来显示动物信息。写一个单独的" ZooDriver" a)创建动物园动物的三个实例,b)获取用户输入以查看动物(1,2,3)c)显示动物信息起诉getAnimal()。"
~~~~~~~~我的代码:
class Zoo:
def __init__(self, animal, animal_type, habitat):
self.animal = animal
self.animal_type = animal_type
self.habitat = habitat
user_input=raw_input("Enter the number 1, 2, or 3 for information on an animal.")
if user_input == "1":
my_animal = Zoo("Giraffe", "herbivore", "outside")
elif user_input == "2":
my_animal = Zoo("Lion", "carnivore", "inside")
elif user_input == "3":
my_animal = Zoo("Bear", "omnivore", "inside")
print "Your animal is a %s, it is a %s, and has an %s habitat." % (my_animal.animal, my_animal.animal_type, my_animal.habitat)
答案 0 :(得分:2)
一个类定义了事物的类型。一个实例是该类型的一个 thing 。例如,你可以说Building
是一种东西。
让我们从名为Building
的小组开始:
class Building():
pass
现在,要创建一个实际的建筑 - 一个实例 - 我们称它几乎就像是一个函数:
b1 = Building()
b2 = Building()
b3 = Building()
在那里,我们刚刚创建了三座建筑物。它们是相同的,不是很有用。也许我们可以在创建它时为它命名,并将其存储在实例变量中。这需要创建一个带参数的构造函数。所有类方法也必须将self
作为其第一个参数,因此我们的构造函数将采用两个参数:
class Building():
def __init__(self, name):
self.name = name
现在我们可以创建三个不同的建筑物:
b1 = Building("firehouse")
b2 = Building("hospital")
b3 = Building("church")
如果我们想创建一个"驱动程序"创建三座建筑的班级,我们可以很容易地做到这一点。如果要在创建实例时设置实例变量或执行某些操作,可以在构造函数中执行此操作。例如,这会创建一个类,它创建三个建筑物并将它们存储在一个数组中:
class Town():
def __init__(self):
self.buildings = [
Building("firehouse"),
Building("hospital"),
Building("church")
]
我们现在可以创建一个创建三个其他对象的对象。希望这足以让你超越理解课程的最初障碍。
答案 1 :(得分:0)
好的我会尝试回答这里的主要问题:课程是什么。
From Google: class /klas/
noun: class; plural noun: classes
1.
a set or category of things having some property or attribute in common and
differentiated from others by kind, type, or quality.
在编程中,类就是这样。比方说,比如你有班级狗。狗吠“ruf ruff”。
我们可以使用这些信息在python中定义dog类。
class Dog:
def bark(self):
print "ruf ruff"
要使用该类,请instantiated
调用()
构造函数:
Spot = Dog()
然后我们想让Spot吠叫,所以我们调用类的method
:
Spot.bark()
为了进一步解释这里的代码细节,将超出这个问题的范围。
进一步阅读:
http://en.wikipedia.org/wiki/Instance_%28computer_science%29
http://en.wikipedia.org/wiki/Method_%28computer_programming%29
答案 2 :(得分:-1)
直接回答:
class Zoo(object):
def __init__(self, name="Python Zoo"):
self.name = name
self.animals = list()
def getAnimal(self,index):
index = index - 1 # account for zero-indexing
try:
print("Animal is {0.name}\n Diet: {0.diet}\n Habitat: {0.habitat}".format(
self.animals[index]))
except IndexError:
print("No animal at index {}".format(index+1))
def listAnimals(self,index):
for i,animal in enumerate(self.animals, start=1):
print("{i:>3}: {animal.name}".format(i=i,animal=animal))
class Animal(object):
def __init__(self, name=None, diet=None, habitat=None):
if any([attr is None for attr in [name,diet,habitat]]):
raise ValueError("Must supply values for all attributes")
self.name = name
self.diet = diet
self.habitat = habitat
class ZooDriver(object):
def __init__(self):
self.zoo = Zoo()
self.zoo.animals = [Animal(name="Giraffe", diet="Herbivore", habitat="Outside"),
Animal(name="Lion", diet="Carnivore", habitat="Inside"),
Animal(name="Bear", diet="Herbivore", habitat="Inside")]
def run(self):
while True:
print("1. List Animals")
print("2. Get information about an animal (by index)"
print("3. Quit")
input_correct = False
while not input_correct:
in_ = input(">> ")
if in_ in ['1','2','3']:
input_correct = True
{'1':self.zoo.listAnimals,
'2':lambda x: self.zoo.getAnimal(input("index #: ")),
'3': self.exit}[in_]()
else:
print("Incorrect input")
def exit(self):
return
if __name__ == "__main__":
ZooDriver().run()
我实际上并没有运行这段代码,所以可能会发生一些愚蠢的拼写错误,并且通常会出现#34; off-by-one"错误(哎呀),但我对它很有信心。它显示了您的教师赢得的许多概念,并期望您已经掌握了(例如字符串格式化,很可能,几乎可以肯定哈希表与lambdas)。出于这个原因,我强烈建议您不要复制此代码以便上交。