Python學習(三) 類

2021-10-03 20:21:03 字數 3780 閱讀 3657

目錄

類的定義

建立例項

給屬性設定預設值

修改屬性值

類的繼承

給子類定義屬性和方法

重寫父類方法

將例項用作屬性

類的匯入

匯入單個類

匯入多個類

匯入整個模組

匯入所有類

類是一類事務的抽象,比如不同名字,年齡的人都是人,不同型別的車都是車。

一般來說,類名使用駝峰命名法,每個單詞首字母大寫;屬性和方法使用小寫,單詞之間使用下劃線。

class people:

def __init__(self, name):

self.name = name

def say_name(self):

print(self.name)

類中的函式稱之為方法,任何方法的第乙個形參都是self,self指向的是例項的引用,呼叫方法時,self會自動傳入self。

__init__()是乙個特殊的方法,在類被例項化時呼叫,左右各有兩個下劃線,防止與類的普通方法衝突。建立例項時,僅需為後面的形參name提供值即可。提供的值被賦給name變數,並關聯到self,也就是當前建立的例項裡。像這樣可通過例項訪問的變數成為屬性。

使用句點表示法可通過例項訪問屬性,呼叫方法。

p1 = people("icydate")

print(p1.name)

p1.say_name()

若要建立多個例項,重複呼叫類例項化即可。

p1 = people("icydate")

p2 = people("iceink")

p3 = people("mike")

class people:

def __init__(self, name):

self.name = name

# 預設age為18

self.age = 18

1、通過例項直接訪問的方式進行重新賦值。

p = new people("mike")

print(p.name)

p.name = "jack"

print(p.name)

2、通過方法修改屬性的值,如果有替你更新屬性的方法,將大有裨益。這樣,你就無需直接訪問屬性,而可將值傳遞給乙個方法,由它在內部進行更新。

class people:

def __init__(self, name, age):

self.name = name

self.age = age

def change_name(self, name):

self.name = name

p = people("mike", 18)

print(p.name)

p.change_name("jack")

print(p.name)

編寫類時,並非總是要從空白開始。如果你要編寫的類是另乙個現成類的特殊版本,可使用繼承。乙個類繼承另乙個類時,它將自動獲得另乙個類的所有屬性和方法;原有的類稱為父類,而新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。

class fruit:

def __init__(self, name):

self.name = name

def say_name(self):

print(self.name)

# 蘋果類繼承水果類

def __init__(self, name):

# 初始化父類屬性, super代表父類,執行父類的__init__()

super.__init__(name)

讓乙個類繼承另乙個類後,可新增區分子類和父類所需的新屬性和方法。

# 新增color屬性,say_color()方法

def __init__(self, name, color):

super.__init__(name)

self.color = color

def say_color(self):

print(self.color)

對於父類的方法,只要它不符合子類模擬的實物的行為,都可對其進行重寫。為此,可在子類中定義乙個這樣的方法,即它與要重寫的父類方法同名。這樣,python將不會考慮這個父類方法,而只關注你在子類中定義的相應方法。

# 重寫父類sayname()方法

def __init__(self, name, color):

super.__init__(name)

self.color = color

def say_color(self):

print(self.color)

# 與父類方法同名即可重寫邏輯

def say_name(self):

乙個類的例項可以作為另乙個類的屬性,這裡我們把color提取出來,這麼做的目的是讓一些複雜類的結構,變的簡單。

class color:

def __init__(self, color):

self.color = color

def __init__(self, name):

super.__init__(name)

self.color = color()

my_car.py

class car:

def __init__(self, name):

self.name = name

def say_name(self):

print(self.name)

main.py

from my_car import car

car = car("audi")

my_car.py

class car:

def __init__(self, name):

self.name = name

def say_name(self):

print(self.name)

class bigcar:

def __init__(self, name):

self.name = name

self.type = "big"

def say_name(self):

print(self.name)

main.py

from my_car import car, bigcar

car = car("audi")

bigcar = bigcar("audi-big")

可匯入整個模組,在通過句點表示法訪問對應的類

import my_car

car = my_car.car("audi")

"""或者模組名太長,可用as取別名"""

import my_car as mc

from my_car import *

TypeScript學習(三) 類

前篇 typescript學習 二 函式 js中的類可以看之前寫的 new操作符到底幹了什麼。接下來說說typescript中的class。在ts中class的定義方式和es6中的語法糖class很相似。class a run void getname string setname name str...

三類MySQL MySQL常用的三類函式

經常編寫程式或者使用資料庫的同學一定體會到函式的重要性,豐富的函式往往能使使用者的工作事半功倍。函式能幫助使用者做很多事情,比如說字串的處理 數值的運算 日期的運算等,在這方面mysql提供了多種內建函式幫助開發人員編寫簡單快捷的sql語句,其中常用的函式有字串函式 日期函式和數值函式。1 字串函式...

Python(三) 類 計數器

classa count 0 類屬性,屬於該類 def init self,name,age self.name name 例項屬性,屬於例項物件 self.age age 例項屬性,屬於例項物件 defget count self 例項方法,也屬於物件 sutdent.count sutdent....