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