class传参 python_Python类的概念、定义、属性、继承
1.面向?qū)ο?Object Oriented,OO)概念
面向?qū)ο?#xff0c;是我們編程的一種思維。
早期的計算機編程是基于面向過程的方法,例如實現(xiàn)算術(shù)運算1+1+2 = 4,通過設(shè)計一個算法就可以解決當時的問題。隨著計算機技術(shù)的不斷提高,計算機被用于解決越來越復(fù)雜的問題。通過面向?qū)ο蟮姆绞?#xff0c;將現(xiàn)實世界的事物抽象成對象,現(xiàn)實世界中的關(guān)系抽象成類、繼承。通過面向?qū)ο蟮姆椒?#xff0c;更利于用人理解的方式,對復(fù)雜系統(tǒng)進行分析、設(shè)計與編程。同時也提高了系統(tǒng)的可維護性,可擴展性,可重用性。
(就是使編程的思維,更接近與人的思維和認知)
面向?qū)ο缶幊痰年P(guān)鍵,就是類的定義。
類是對現(xiàn)實生活中一類具有共同特征的事物的抽象。
2.類的定義
基本形式: class ClassName(object): Statement 1.class定義類的關(guān)鍵字2.ClassName類名,類名的每個單詞的首字母大寫(駝峰規(guī)則)。3.object是父類名,object是一切類的基類。在python3中如果繼承類是基類可以省略不寫。'''重點:學會定義類,了解屬性和方法,類的初始化和實例化。定義類時,這種方法可以使類對象實例按某種特定的模式生產(chǎn)出來。'''#類方法:'''后面的參數(shù)中第一個參數(shù)我們約定俗成的為self參數(shù)名,self代表的是在類實例化后這個實例對象本身。初始化函數(shù)除了有self這個參數(shù)表示實例對象本身之外,其他的參數(shù)的定義也遵循函數(shù)的必備參數(shù)和默認參數(shù)一樣的原則,必備參數(shù)就是在實例化是一定要傳入的參數(shù),默認參數(shù)就是在定義時可以給這個參數(shù)一個初始值。沒有函數(shù)名的函數(shù)'''3.類的實例化
基本形式:實例對象名 = 類名(參數(shù)) 在實例化的過程中,self代表的就是這個實例對象自己。 實例化時會把類名后面接的參數(shù)傳進去賦值給實例, 這樣傳進去的參數(shù)就成為了這個實例對象的屬性。 實例化的過程遵循函數(shù)調(diào)用的原則。 在實例化時也必須個數(shù)和順序與定義時相同(使用關(guān)鍵字參數(shù)可以改變傳參的順序)。 當初始化函數(shù)定義時使用了默認參數(shù)時,在實例化時默認參數(shù)可以不傳參這時 這個實例對象就會使用默認的屬性,如果傳了參數(shù)進去則會改變這參數(shù)值, 使實例化對象的屬性就為你傳進來的這個參數(shù)。 isinstance(實例名,類名) 判斷一個實例是不是這個類的實例。#類 類是對現(xiàn)實生活中,具有共同特征的事物的抽象。class Animal(object): pass# object, 基類。 任何類都需要繼承object# 類 (模子)class Animal: #python3 繼承object,可寫可不寫 passdog = Animal() #生成一個實例 dogcat = Animal() #生成實例cat##構(gòu)造方法 __init__() , self 參數(shù)class Animal: def __init__(self): # 構(gòu)造方法,實例化對象時,必須要調(diào)用__init__ print('正在實例化一個類') def test(self): print('aaa')#當我們沒有寫__init__() ,默認調(diào)用我們父類__init__class Animal: def test(self): print('aaa')###self, 實例化對象(本身)#self 可以替換成別的參數(shù)名。但是最好別改class TestSelf: #方法 :testSelf 方法的首字母小寫 類: TestSelf 類的首字母一般大寫 駝峰命名規(guī)則 def __init__(self): #在初始化的時候,默認往構(gòu)造方法,傳入一個值 print('正在實例化') def test(self): print('bbb') def test2(): print('ccc')4.類和實例的屬性
類屬性 .類屬性是可以直接通過“類名.屬性名”來訪問和修改。 .類屬性是這個類的所有實例對象所共有的屬性, 任意一個實例對象都可以訪問并修改這個屬性(私有隱藏除外)。 .對類屬性的修改,遵循基本數(shù)據(jù)類型的特性:列表可以直接修改,字符串不可以, 所以當類屬性是一個列表時,通過任意一個實例對象對其進行修改。 但字符串類型的類屬性不能通過實例對象對其進行修改。 當實例對不可變對象進行修改之后,會查找實例的類屬性,不會查找類的屬性,同時類的屬性不會邊 實例屬性 .在屬性前面加了self標識的屬性為實例的屬性。 .在定義的時候用的self加屬性名字的形式,在查看實例的屬性時 就是通過實例的名稱+‘.’+屬性名來訪問實例屬性。 一些說明: .一般,方法第一個參數(shù)被命名為self,,這僅僅是一個約定, self沒有特殊含義,程序員遵循這個約定。 .查看類中的屬性和實例屬性可以調(diào)用__dict__方法返回屬性組成的字典。 .Python中屬性的獲取是按照從下到上的順序來查找屬性 .Python中的類和實例是兩個完全獨立的對象 .Python中的屬性設(shè)置是針對對象本身進行的####屬性, 屬性本質(zhì)上就一個變量'''1.實例化屬性2.類屬性 (共有屬性)'''# 1.實例化屬性 , self.nameclass Animal: def __init__(self,name,food): #自己獨有的,就放到實例化里面 print('正在實例化') self.name = name # 實例化屬性:每個實例可能不同,但是都有 self.food = food def get_name(self): print(self.name)#2.類屬性 (共有屬性)class Animal: eye = 2 leg = 4 #共有的 def __init__(self,name,food): print('正在實例化') self.name = name self.food = food def get_name(self): print(self.name)5.類的私有屬性和方法
在Python中,通過單下劃線”_”來實現(xiàn)模塊級別的私有化,一般約定以單下劃線”_”開頭的變量、函數(shù)為模塊私有的,也就是說”from moduleName import *”將不會引入以單下劃線”_”開頭的變量、函數(shù) 對于Python中的類屬性,可以通過雙下劃線”__”來實現(xiàn)一定程度的私有化。 _”和” __”的使用 更多的是一種規(guī)范/約定,不沒有真正達到限制的目的: “_”:以單下劃線開頭只能允許其本身與子類進行訪問,(起到一個保護的作用) “__”:雙下劃線的表示的是私有類型的變量。這類屬性在運行時屬性名會加上單下劃線和類名。 “__foo__”:以雙下劃線開頭和結(jié)尾的(__foo__)代表python里特殊方法專用的標識,如 __init__()'''在Python中,通過單下劃線”_”來實現(xiàn)模塊級別的私有化,一般約定以單下劃線”_”開頭的變量、函數(shù)為模塊私有的,也就是說”from moduleName import *”將不會引入以單下劃線”_”開頭的變量、函數(shù)'''import random #全部會導入 from random import* #_Set 不會倒入class Animal: _eye = 2 __leg = 4 #共有的 def __init__(self,name,food): print('正在實例化') self.name = name self.food = food def get_name(self): print(self.name)#_”和” __”的使用 更多的是一種規(guī)范/約定,并沒有真正達到限制的目的:dog._eye = 3#dog._Animal__leg ##__ 默認加一個類名,用來警告# “__foo__”:以雙下劃線開頭和結(jié)尾的(__foo__)#代表python里特殊方法專用的標識,如 __init__()6.數(shù)據(jù)封裝
在類里面數(shù)據(jù)屬性和行為函數(shù)的形式封裝起來,訪問時直接調(diào)用,不需知道類里面具體的實現(xiàn)方法。 比如,list.append7.繼承
用法: .在定義類時,可以從已有的類繼承, 被繼承的類稱為基類(父類),新定義的類稱為派生類(子類)。 .在類中找不到調(diào)用的屬性時就搜索基類, 如果基類是從別的類派生而來,這個規(guī)則會遞歸的應(yīng)用上去。 反過來不行。 .如果派生類中的屬性與基類屬性重名,那么派生類的屬性會覆蓋掉基類的屬性。 包括初始化函數(shù)。 .派生類在初始化函數(shù)中需要繼承和修改初始化過程, 使用’類名+__init__(arg)’來實現(xiàn)繼承和私有特性,也可以使用super()函數(shù)。 issubclass(類名1,類名2) 判斷類1是否繼承了類2 作用: 面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用,實現(xiàn)這種重用的方法之一是通過繼承機制。 繼承完全可以理解成類之間的類型和子類型關(guān)系。 子類在重寫父類方法之后,如果要繼承父類方法中的功能,要先調(diào)用父類的方法 class.fun(self)8.多態(tài)
當派生類重寫了基類的方法時就實現(xiàn)了多態(tài)性。(子類重寫父類方法)
## 面向?qū)ο?三個特征: 封裝 ,繼承 多態(tài)# 封裝class Animal: eye = 2 leg = 4 #共有的 def __init__(self,name,food): print('正在實例化') self.name = name self.food = food def get_name(self): print(self.name) def get_food(self): print(self.food)# 繼承#面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用class People(Animal): leg = 2 def __init__(self,name,food,sex): self.name = name self.food = food self.sex = sex def get_sex(self): print(self.sex) def speak(self): print('asdsdgfsagg') def eat(self): print('果子') #多態(tài), (子類重寫父類方法) ,繼承。 (同一個方法,有不同表形式)class Chinse(People): def speak(self): print('你好') def eat(self): print('米飯')class America(People): def speak(self): print('hello') def eat(self): print('面包') class Thai(People): def speak(self): print('薩瓦迪卡') def eat(self): print('香蕉')xiaoMing = Chinse('小明','米飯','男')jeck = America('jeck','面包','男')lala = Thai('lala','香蕉','未知')'''總結(jié):1.類的定義2.__init__() 構(gòu)造方法3.self 參數(shù)。 實例對象本身4.類屬性 (共有屬性), 實例化屬性 5._ __ python 類的私有化。6. 面向?qū)ο?三大特征: 封裝 繼承 多態(tài)'''“我自己是一名從事了多年開發(fā)的Python老程序員,辭職目前在做自己的Python私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的Python學習干貨,從最基礎(chǔ)的到各種框架都有整理,送給每一位喜歡Python小伙伴,想要獲取的可以轉(zhuǎn)發(fā)文章并關(guān)注我的頭條號。在后臺私信我:01,即可免費獲取。"
總結(jié)
以上是生活随笔為你收集整理的class传参 python_Python类的概念、定义、属性、继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java激光图,java-OpenCV
 - 下一篇: oracle删除多条从js到java_一