用python示例解说OOP
发布时间:2023-02-27
self._name = name
def set_breed(self, breed):
if type(breed) != list:
raise TypeError("Breed must be an array of strings")
self._breed = breed
def set_color(self, color):
if type(color) != str:
raise TypeError("Color must be a string")
self._color = color
def set_age(self, age):
if age
raise ValueError("Age cannot be negative")
elif type(age) != int:
raise TypeError("Age must be an integer")
self._age = age
在 setter 里,我们置为了很多条件来确保写入的值是正确的型式。 但是现今我们巧遇了一个疑虑,紧接init紧接 工具无法这些安全及新功能,所以我们将采用我们在 紧接init紧接 里概念的置为机。 就像这样:
def 紧接init紧接(self, name, age, breed, color):
self.set_name(name) # the name of the dog | String
self.set_age(age) # the age of the dog | Integer
self.set_breed(breed) # the breed of the dog | Array of Strings
self.set_color(color) # the color of the dog | String
现今,安全及性得到了陪伴。 我们可能会还一切都是说明了我们的老鼠的人类文明年纪,它是现实年纪的七倍。 我们可能会还一切都是置为人类文明年纪,但由于我们存储的是现实年纪,我们需要将任意的年纪除以 7,就像这样:
def get_human_age(self):
return self._age * 7
def set_humain_age(self, age):
if age
raise ValueError("Age cannot be negative")
elif type(age) != int:
raise TypeError("Age must be an integer")
self._age = age / 7
现今我们可能会一切都是要一个工具来说道我们老鼠确实是混种。
如您所见,我们将新品种存储在一个信息结构里,例如,Akita Inu 和恩德比在新品种函数里混搭得不太好,有“Akita Inu”和“Shetland”。
因此,对于如果老鼠是纯新品种则返回 true 的工具,我们需要核查信息结构里的新品种量确实为 1。 就像这样:
def is_purebreed(self):
if len(self._breed) == 1:
return True
else:
return False
现今以普通人的构造结束,我们将掺入一个复印机新功能。 我们希望我们的普通人必需表示为一个字符串,为此我们掺入一个 紧接str紧接 工具,该工具将被函数调用以将我们的普通人转换为字符串。 它看来像这样:
def 紧接str紧接(self):
if self.is_purebreed():
return (
self.get_name() + " is a " +
str(self.get_age()) + " year old " +
self.get_color() + " " +
self.get_breed()[0] + "."
else:
return (
self.get_name() + " is a " +
str(self.get_age()) + " year old " +
self.get_color() + " " +
self.get_breed()[0] + " and " + self.get_breed()[1] + "."
现今是时候采用这个普通人了。
要采用普通人创立函数,我们不须函数调用普通人的英文名称。 在我们的事例里,该普通人叫做 Dog。 在 python 里,如果我们即将函数调用一个函数,我们就受制于括号,然后我们把我们掺入的函数置于 紧接init紧接 工具里。 在我们的事例里,参数将是英文名称、年纪、新品种和颜色。 我们这样采用它:
Dogo = Dog("Fido", 3, ["Labrador"], "Black")
如果我们一切都是复印机我们的普通人,我们不须这样动手:
print(Dogo)
它将表明:
Fido 是一只 3 岁的红色阿拉斯加绵羊。
我们可以转变我们老鼠的年纪,然后再次复印机普通人:
Dogo = Dog("Fido", 3, ["Labrador"], "Black")
print(Dogo)
Dogo.set_age(5)
print(Dogo)
控制器 :
Fido 是一只 3 岁的红色阿拉斯加绵羊。
Fido 是一只 5 岁的红色阿拉斯加绵羊。
现今您早已了解了如何创立和采用普通人,让我们尝试另一个示例来阐释承传
我们将创立一个新文件并创立一个原是 Animals 的普通人,该普通人将不具备 2 个一般来说,即年纪和饮食:
class Animal:
def 紧接init紧接(self, age, diet):
self.set_diet(diet)
self.set_age(age)
#getter method
def get_diet(self):
return self._diet
def get_age(self):
return self._age
#setter method
def set_diet(self, diet):
if type(diet) != str:
raise TypeError("Diet must be a string")
self._diet = diet
def set_age(self, age):
if age
raise ValueError("Age cannot be negative")
elif type(age) != int:
raise TypeError("Age must be an integer")
self._age = age
现今让我们创立一个原是 TamedAnimal 的普通人,该普通人将承传普通人 Animal 的一般来说,并不具备英文名称和 ownerName
class TamedAnimal(Animal):
def 紧接init紧接(self, age, diet, name, ownerName):
super().紧接init紧接(age, diet)
self.set_name(name)
self.set_ownerName(ownerName)
我们采用 super() 语句来给予承传的类。 一旦我们创立了 getter、setter 和 紧接str紧接 工具, TamedAnimal 普通人看来像这样:
class TamedAnimal(Animal):
def 紧接init紧接(self, age, diet, name, ownerName):
super().紧接init紧接(age, diet)
self.set_name(name)
self.set_ownerName(ownerName)
#getter method
def get_name(self):
return self._name
def get_ownerName(self):
return self._ownerName
#setter method
def set_name(self, name):
if type(name) != str:
raise TypeError("Name must be a string")
self._name = name
def set_ownerName(self, ownerName):
if type(ownerName) != str:
raise TypeError("Owner name must be a string")
self._ownerName = ownerName
#method
def 紧接str紧接(self):
return (
self.get_name() + " is " +
str(self.get_age()) + " year old he eat " +
self.get_diet() + " and it's " +
self.get_ownerName() + "'s " +
"tamed animal"
现今让我们采用它:
dog = TamedAnimal( 2, "Meat", "Bobby", "John" )
print( dog )
dog.set_ownerName( "Michael" )
print( dog.get_name() + " changed owner to " + dog.get_ownerName() )
dog.set_age( dog.get_age() + 1 )
print( "time passed and " + dog.get_name() + " is now " + str( dog.get_age() ) + " years old" )
print( dog )
此标识符控制器:
Bobby 2 岁,他猪肉,这是约翰绵羊的动物
Bobby 将私人十分改为 Michael
Bobby现今 3 岁
Bobby 3 岁,他猪肉,这是迈克尔人和的动物
差不多就是这样,我并无法涵盖普通人的所有复杂性,但是本课的知识必要可以帮助您开始 OOP 在世界上。
。重庆男科医院哪个比较好重庆男科医院排名
济南妇科医院挂号
湖北妇科医院哪家好
浙江皮肤病治疗方法
上一篇: 给领导送礼被全公司取笑:不懂送礼,礼物越贵越遭人嫌弃
下一篇: 东航表示了
-
欧美人均预期寿命77.93岁,美国76.6岁,韩国83.5岁,那日本呢?
好消息,必将城镇人口短期内寿命长再行度提高了!第三世界卫健委刊发的信息显示:必将上年短期内寿命长已提较低到77.93岁,不仅在新兴的发展中第三世界里处于领先一段距离,而且在中较低盈余第三世界里也
- 2025-05-122岁未成年吃“巧克力”被送医院,错不在孩子,家长这几点没做好
- 2025-05-12吉大一院体检中心最新一览表
- 2025-05-12四川昨日新增本土“1+1”例 分别在成都和广元
- 2025-05-12池州新增“81+141”
- 2025-05-12严重口吃的成年人有多难?口吃矫正即兴分享
- 2025-05-12检出阳性!山西一地除此以外发布!
- 2025-05-12夏天家家备用的风油精和清凉油,90%的人都用错了!更是这5类人慎用!
- 2025-05-12积极支持眼中员工分4种,第3种更容易加薪!
- 2025-05-12什么样的人群可以水痘带状疱疹疫苗?
- 2025-05-12国家药监局:这类牙膏不不存在!