天天看點

python 第3天

class Hotdog:

    def __init__(self):  #初始化對象

        self.cooked_level = 0

        self.cooked_string ="Raw"

        self.condiments = [] #空數組

    def __str__(self):  #print(對象)

        msg = "hot dog"

        if len (self.condiments) > 0 :

            msg = msg + " with"

        for i in self.condiments:

            msg = msg +" "+ i + ","

        msg = msg.strip(",")

        msg = self.cooked_string + " "+msg + "."+str(self.cooked_level)

        return msg

    def cook (self,time):

        self.cooked_level = self.cooked_level + time

        if self.cooked_level > 8:

            self.cooked_string = "Charcoal"

        elif self.cooked_level > 5:

            self.cooked_string = "Well_down"

        elif self.cooked_level >=3:

            self.cooked_string = "Medium"

        else:

            self.cooked_string = "Raw"

    def addCondiment(self,condiments):

        self.condiments.append(condiments)

myDog = Hotdog()

print (myDog)

print ("Cooking hot dog for 4 minutes...")

myDog.cook(4)

print ("Cooking hot dog for 3 minutes...")

myDog.cook(3)

print ("Cooking hot dog for 10 minutes...")

myDog.cook(10)

myDog.cooked_level=3 # 這些對象的屬性都可以更改,不用通過方法,python 沒有提供隐藏資料的方法,不過可以自己搞定。

print ("Now I'm going to add some stuff on my hot dog")

myDog.addCondiment("ketchup")

myDog.addCondiment("mustard")

設定私有變量和私有方法可以用__開頭

class Person:

    def __init__(self):

        self.__name = "jixiang"

        self.age = 22

    def __get_name(self):

        return self.__name

    def get_name(self):

    def get_age(self):

        return self.age

    def change_name(self):

        self.__name = "malong"

    def change_name1(self):

        self.__name = "jilong" #可以清楚的看到無論是私有屬性還是私有方法在類内都可以使用。

        newname=self.__get_name()

        return newname

person = Person()

print (person.get_age())

#print (person.__get_name())  #無論是私有變量還是私有方法都無法通路。

#print (person.__name)

person.__name ="lilong" #這裡雖然沒有報錯,但是你看下面,列印出來依然沒有改變

print (person.get_name())

person.change_name()

person.change_name1()

下面進入多态 ,

封裝繼承多态是面向對象的重要内容。

多态

本文轉自 神迹難覓 51CTO部落格,原文連結:http://blog.51cto.com/ji123/1965156,如需轉載請自行聯系原作者