python的类和实例_Python 面向对象编程——类和实例
1面向對象編程
面向對象編程:
面向對象編程——Object OrientedProgramming
OOP把對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。
面向過程的程序設計把計算機程序視為一系列的命令集合,即一組函數的順序執行。為了簡化程序設計,面向過程把函數繼續切分為子函數,即把大塊函數通過切割成小塊函數來降低系統的復雜度。
面向對象的程序設計把計算機程序視為一組對象的集合,而每個對象都可以接收其他對象發過來的消息,并處理這些消息,計算機程序的執行就是一系列消息在各個對象之間傳遞。
所有的數據類型可以視為對象,當然也可自定義對象,自定義的對象數據類型就是面向對象中的類(class)的概念。
涉及到類,自然想到實例,類是數據類型的抽象,而實例是類的具體(個人理解)。
>>> std1 = { 'name': 'Michael','score': 98 }
>>> std2 = { 'name': 'Bob','score': 81 }
>>>
>>> def print_score(std): --打印學生的姓名和成績
... print('%s: %s' % (std['name'], std['score']))
...
>>> print_score(std1)
Michael: 98
>>> print_score(std2)
Bob: 81
根據面向對象的程序設計思想,這個student應該被視為對象,抽象成類;
>>> classStudent(object): --定義類
... def __init__(self, name, score):
... self.name = name
... self.score = score
... def print_score(self): --定義方法
... print('%s: %s' % (self.name, self.score))
...
>>> bart = Student('Bart Simpson',59)
>>> lisa = Student('Lisa Simpson',87)
>>> bart.print_score() --調用對象的方法,一個具體的對象——實例
Bart Simpson: 59
>>> lisa.print_score()
Lisa Simpson: 87
面向對象的設計思想是抽象出Class,根據Class創建Instance。
1.1類和實例
1.1.1類和實例
>>> class Student(object): --class定義類的關鍵字,Student類名(大寫開頭),(object)表示從哪個類繼承下來的
... pass
...
>>> Student
>>> bart = Student() --根據類創建實例
>>> bart
<__main__.Student object at0x2b7d2fd759e8>
如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。
可以自由地給一個實例變量綁定屬性,比如,給實例bart綁定一個name屬性:
>>> bart.name = 'Bart Simpson'
>>> bart.name
'Bart Simpson'
由于類起到的是模板的作用,創建類時,可以把必須綁定的屬性強制填寫進去—通過init方法
>>> class Student(object):
... def __init__(self, name,score): --init方法,init的第一個參數永遠是self
... self.name = name
... self.score = score
...
在__init__方法內部,就可以把各種屬性綁定到self,因為self就指向創建的實例本身。
存在init方法,創建實例時,必須填入指定參數,但self不需要傳入,Python自己填入。
>>> bart = Student('DAIDAI', 99) --必須填入指定參數,強制性
>>> bart.name --name,score成為對象的屬性
'DAIDAI'
>>> bart.score
99
>>> bart.self --不能這么指定self
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'Student' object has noattribute 'self'
>>> bart.grade = 'A' --新增屬性grade
>>> bart.grade
'A'
類的方法和普通函數沒有什么區別,所以,你仍然可以用默認參數、可變參數、關鍵字參數和命名關鍵字參數。
1.1.2數據封裝
>>> class Student(object):
... def __init__(self, name, score):
... self.name = name
... self.score = score
... def print_score(self): -- print_score方法
... print('%s: %s' % (self.name, self.score))
... def get_grade(self): --get_grade 方法
... if self.score >= 90:
... print('A')
... elif self.score >= 70:
... print('B')
... else:
... print('C')
...
定義方法,第一個參數是self,其他和函數一致。
>>> daidai = Student('DAIDAI', 99)
>>> daidai.print_score() --實例變量上的調用
DAIDAI: 99
>>> daidai.get_grade()
A
以上便是實現類的定義和其方法的定義,實現了類的封裝。
方法就是與實例綁定的函數,和普通函數不同,方法可以直接訪問實例的數據。
Python允許對實例變量綁定任何數據,也就是說,對于兩個實例變量,雖然它們都是同一個類的不同實例,但擁有的變量名稱都可能不同。
>>> daidai.age = 8
>>> daidai.age
8
>>> xiongxiong.age --這個實例變量并未綁定
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'Student' object has noattribute 'age'
總結
以上是生活随笔為你收集整理的python的类和实例_Python 面向对象编程——类和实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5分绩点转4分_高考语文如何考上120分
- 下一篇: window下tomcat 按天生成日志