python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解
面向對象最重要的概念就是類(class)和實例(instance),類是抽象,而實例(Instance)則是一個個具體的對象
面向對象三大特點:封裝、繼承和多態
class Animal(object):
def __init__(self, name):
self.name = name # 初始化類變量
def Dog(self): # 創建類中的方法
print(self.name)
復制代碼
一、基本概念
1.1 概念
類(Class):
用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
類變量:
類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作為實例變量使用。
數據成員:
類變量或者實例變量, 用于處理類及其實例對象的相關的數據。
方法重寫:
如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
局部變量:
定義在方法中的變量,只作用于當前實例的類。
實例變量:
在類的聲明中,屬性是用變量來表示的。這種變量就稱為實例變量,是在類聲明的內部但是在類的其他成員方法之外聲明的。
繼承:
即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。
實例化:
創建一個類的實例,類的具體對象。
方法:
類中定義的函數。
對象:
通過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。
1.2 代碼實例
# -*- coding: utf-8 -*-
"""
1、全局變量:在模塊內、在所有函數外面、在class外面,這就是全局變量。
2、局部變量:在函數內、在class的方法內(未加self修飾的) ,這就是局部變量
3、靜態變量:在class內的,但不在class的方法內的,這就是靜態變量
4、實例變量:在class的方法內的,用self修飾的變量,這就是實例變量
"""
Global_Variable = "我是全局變量"
class ExampleClass(object):
Class_static_variable = "我是類靜態變量" # 靜態變量
def __init__(self, Instance_Variable): # 構造函數,sel代表對象,有Instance_Variable屬性
self.Instance_Variable = Instance_Variable # 實例變量
def study_example(self):
Local_variable = "我是一個局部變量" # 局部變量
print(Local_variable) # 輸出局部變量
print(self.Instance_Variable) # 輸出實例變量
class ChlidExample(ExampleClass):
def __init__(self, Instance_Variable, Chlid_Variable):
ExampleClass.__init__(self, Instance_Variable) # 初始化父類實例變量
self.Chlid_Variable = Chlid_Variable
def test(self):
print("學習 python的面向對象,了解變量是必須的,我是孩子變量 {},我是繼承變量:{}".format(self.Chlid_Variable, self.Instance_Variable))
Instance_Variable = "我是用來測試實例變量的"
Chlid_Variable = "我是用來測試局部變量的 "
study = ChlidExample(Instance_Variable, Chlid_Variable) # 調用子類對象
study.study_example() # 子類調用父類方法
study_child = ChlidExample(Instance_Variable, Chlid_Variable) # 調用子類對象
study_child.test() # 子類調用子類方法
復制代碼
二、面向對象三大特性解析
2.1 封裝
封裝,顧名思義就是將內容封裝到某個地方,以后再去調用被封裝在某處的內容。
所以,在使用面向對象的封裝特性時,需要:
將內容封裝到某處
從某處調用被封裝的內容
class Animal(object):
def __init__(self, name): # 初始化方法
self.name = name # 初始化類變量
def Dog(self): # 創建類中的方法
print(self.name)
def Cat(self): # 創建類中的方法
print(self.name)
info = Animal('dahuang') # 封裝到對象 info
print(info.name) # 直接調用
info.Dog() # self 間接調用
復制代碼
2.2 繼承
繼承,面向對象中的繼承和現實生活中的繼承相同,即:子可以繼承父的內容。
對于面向對象的繼承來說,其實就是將多個類共有的方法提取到父類中,子類僅需繼承父類而不必一一實現每個方法。
class Animal(object):
def __init__(self, name): # 初始化方法
self.name = name # 初始化類變量
def eat(self): # 創建類中的方法
print("%s吃 "%self.name)
def drink(self): # 創建類中的方法
print("%s喝"%self.name)
class Dog(Animal): # 繼承Animal的 Dog
def __init__(self, name):
self.name = name #
def cry(self):
print("汪汪叫")
class Cat(Animal): # 繼承Animal的 Cat
def __init__(self, name):
self.name = name #
def cry(self):
print("喵喵叫")
child = Dog('鄰居家的貓') # 封裝到子類對象 info
child.drink() # 子類調用父類的方法
復制代碼
2.3 多態
多態,字面理解為多種形態,沒錯,就是一個方法能表現出不同的形態。
同一操作(方法)作用于不同的對象,可以有不同的解釋,產生不同的結果,而無須明確知道這個子類實際上是什么。將其上升到父類與子類的層面時,就是父類的引用指向了子類的對象。
前面所講的封裝和繼承都是為多態服務的
然而, Python屬于鴨子類型,大意是:當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。
python中的鴨子類型允許我們使用任何提供所需方法的對象,而不需要迫使它成為一個子類。
多態三大前提:
要有繼承;
重寫;
父類引用指向子類對象。
class Animal(object):
def __init__(self, name): # 初始化方法
self.name = name # 初始化類變量
class Dog(Animal): # 繼承Animal的 Dog
def __init__(self, name):
self.name = name #
def cry(self):
print("%s汪汪叫" % self.name)
class Cat(Animal): # 繼承Animal的 Cat
def __init__(self, name):
self.name = name
def cry(self):
print("%s喵喵叫" % self.name)
def DuoTai(child):
print(child.cry())
child1 = Dog('鄰居家的狗') # 封裝到子類對象 info
DuoTai(child1) # 多態展示Cry方法,重寫
child2 = Cat('鄰居家的貓') # 封裝到子類對象 info
DuoTai(child2) # 多態展示Cry方法, 重寫
復制代碼
三、進階
3.1 基礎重載方法
3.2 下劃線說明
foo:
定義的是特殊方法,一般是系統定義名字 ,類似 init() 之類的。
_foo:
以單下劃線開頭的表示的是 protected 類型的變量,即保護類型只能允許其本身與子類進行訪問,不能用于 from module import *
_ _ foo:
雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進行訪問了。
總結
以上是生活随笔為你收集整理的python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongo 唯一约束索引_Java:My
- 下一篇: .net core 正则表达式 获取 等