目錄
類的定義
建立例項
給屬性設定預設值
修改屬性值
類的繼承
給子類定義屬性和方法
重寫父類方法
將例項用作屬性
類的匯入
匯入單個類
匯入多個類
匯入整個模組
匯入所有類
類是一類事務的抽象,比如不同名字,年齡的人都是人,不同型別的車都是車。
一般來說,類名使用駝峰命名法,每個單詞首字母大寫;屬性和方法使用小寫,單詞之間使用下劃線。
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()方法對於父類的方法,只要它不符合子類模擬的實物的行為,都可對其進行重寫。為此,可在子類中定義乙個這樣的方法,即它與要重寫的父類方法同名。這樣,python將不會考慮這個父類方法,而只關注你在子類中定義的相應方法。def __init__(self, name, color):
super.__init__(name)
self.color = color
def say_color(self):
print(self.color)
# 重寫父類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....