当前位置:首页 >> 中医保健 >> 用python示例解说OOP

用python示例解说OOP

发布时间:2023-02-27

ror("Name must be a string")

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 在世界上。

重庆男科医院哪个比较好
重庆男科医院排名
济南妇科医院挂号
湖北妇科医院哪家好
浙江皮肤病治疗方法
标签:示例
友情链接: 武汉白癜风医院