類和麪向對象

類其實說通俗一點就是一個工廠,這個工廠是生產一些具有相同屬性,而且有部分共同功能方法的物體,這裏我就稱它爲工廠。

比如我們現在有一個工廠,工廠可以生產杯子,其中有大杯,小杯,隔熱杯和不隔熱杯。這些杯子有相同的屬性就是它們都是杯子,有相同的功能就是都可以裝水,它們不同的屬性就是有的杯子大,有的杯子小,有不一樣的功能就是隔熱和不隔熱,那麼我們就稱,工廠就是類,而真實存在的杯子就是對象。要先有工廠纔有杯子也就是說要先有類纔有對象。對象是由類產生的,下面說一下類的定義 

class class_name:
#屬性
#方法

對象的產生

name = class_name

其中屬性是大家都共同擁有的,但它是可以改變的。方法除了一些特殊的以外,是共用的。

class Cat:
    #屬性
    #方法
    def eat(self):
        print("貓在吃魚...")
    def drink(self):
        print("貓在喝可樂...")
tom = Cat()
tom.eat()

上面代碼中就定義了一個類Cat,還定義了兩個方法drink和eat

第八行代碼的意思是說讓工廠Cat(類)生產一個tom的貓(對象),第九行代碼就是去調用eat方法。

下面說一下屬性的定義。

一般屬性是定義在一個叫做__init__的方法裏面的,這個init的意思就是初始化的意思,也就是說,這隻貓剛剛被生產出來的時候就具備有這個的屬性,不過這個屬性是可以通過後天改變的。下面我們看看怎麼定義屬性:

class Cat:
    #屬性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("貓在吃魚...")
    def drink(self):
        print("貓在喝可樂...")
    def introduce(self):
        print("%s的年齡是%d"%(self.name,self.age))
tom = Cat('littlecat',40)
tom.introduce()
print(tom.name)
print(tom.age)

其中,__init__方法就是定義屬性的方法,通過__init__方法可以看到這個方法需要三個參數,所以在生成對象的時候要傳入三個參數,可是爲什麼我們在13行代碼中,只傳遞兩個參數呢,因爲self這個參數是指對象本身,比如十三行代碼中,我們生成的對象是tom,那麼self就是tom,也就是說,如果你想調用tom裏面的self.name變量的時候,就可以寫成這樣tom.name。而new_name對應的就是我們傳入的十八行代碼中傳入的第一個參數littlecat,所以new_name就等於littlecat,new_age就是40。你把上面的代碼執行一下你就知道了。

下面再說一個方法__str__,我們可以先來看一個例子。

class Cat:
    #屬性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("貓在吃魚...")
    def drink(self):
        print("貓在喝可樂...")
    def introduce(self):
        print("%s的年齡是%d"%(self.name,self.age))
tom = Cat('littlecat',40)
print(tom)

打印出來的tom的信息其實就是tom這個對象在系統中放在的內存地址。這個我們看不懂呀。那怎麼辦,如果你想打印出tom的時候,是讓tom輸出自己的信息,應該怎麼做呢,可以看下面這個函數。

class Cat:
    #屬性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("貓在吃魚...")
    def drink(self):
        print("貓在喝可樂...")
    def introduce(self):
        print("%s的年齡是%d"%(self.name,self.age))
    def __str__(self):
        return "%s今年大概是%d"%(self.name,self.age)
tom = Cat('littlecat',40)
print(tom)

__str__函數其實就是一個描述信息的方法,這個方法在我們去打印一個對象的時候,它就會返回__str__方法裏面的返回信息。不過有一點要注意一下就是__str__方法一定要有return


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章