【发布时间】:2015-09-09 22:21:49
【问题描述】:
我有:
import datetime
class Animal(object):
def __init__(self, dob, carnivore):
self.__dob = dob
self.__carnivore = carnivore
@property
def dob(self):
return self.__dob
@dob.setter
def dob(self, dob):
self.__dob = dob
@property
def carnivore(self):
return self.__carnivore
@carnivore.setter
def carnivore(self, carnivore):
self.__carnivore = carnivore
def __str__(self):
return "DOB: " + str(self.__dob) + "\nCarnivore: " + str(self.__carnivore)
我的第二堂课:
import Species.Animal as Animal
import datetime as date
class Amphibian(Animal):
def __init__(self, dob=date.datetime.now(), carnivore=False, *characteristics):
super(Animal, self).__init__(dob, carnivore)
self.__characteristics = []
for characteristic in characteristics:
self.__characteristics.append(characteristic)
@property
def characteristics(self):
return self.__characteristics
@characteristics.setter
def characteristics(self, characteristic):
self.__characteristics.append(characteristic)
def __str__(self):
characteristics = ""
for characteristic in self.__characteristics:
characteristics += str(characteristic)
return characteristics
使用:
amphibian = Amphibian(date.date(1979, 1, 12), True, "BackBone", "Cold Blooded")
print(amphibian)
我得到错误:
Traceback(最近一次调用最后一次):文件 "C:/Users/Daniel/PycharmProjects/ObjectOrientedSpecies/Species/Amphibian.py", 第 7 行,在 class Amphibian(Animal): TypeError: module.__init__() 最多接受 2 个参数(给定 3 个)
我是 Python 新手,所以我不确定什么是好的 OO 实践。
【问题讨论】:
标签: python-3.x inheritance object-oriented-analysis