Python筆記(8)

來源:互聯網
上載者:User

Python的物件導向性質

類和對象是物件導向編程的兩個主要方面。類建立一個新類型,而對象這個類的 執行個體 。這類似於你有一個int類型的變數,這儲存整數的變數是int類的執行個體(對象)。

 

需要注意的是,在Python中,即便是整數也被作為對象(屬於int類)。這和C++、Java(1.5版之前)把整數純粹作為類型是不同的。通過help(int)瞭解更多這個類的詳情。

 

對象可以使用普通的屬於對象的變數儲存資料。屬於一個對象或類的變數被稱為域。對象也可以使用屬於類的函數來具有功能。這樣的函數被稱為類的方法。這些術語協助我們把它們與孤立的函數和變數區分開來。域和方法可以合稱為類的屬性。

 

 一.Python的__init__方法

例如:

#!/usr/bin/python<br /># Filename: class_init.py</p><p>class Person:<br /> def __init__(self, name):<br /> self.name = name<br /> def sayHi(self):<br /> print 'Hello, my name is', self.name</p><p>p = Person('Swaroop')<br />p.sayHi()</p><p># This short example can also be written as Person('Swaroop').sayHi() </p><p>

輸出為:

$ python class_init.py<br />Hello, my name is Swaroop </p><p>

在一定程度上,可以認定為Python中的建構函式。

如同__init__方法一樣,還有一個特殊的方法__del__,類似於解構函式.

 

注意:Python中所有的類成員(包括資料成員)都是公用的,所有的方法都是有效。
只有一個例外:如果你使用的資料成員名稱以 雙底線首碼 比如__privatevar,Python的名稱管理體系會有效地把它作為私人變數。
這樣就有一個慣例,如果某個變數只想在類或對象中使用,就應該以單底線首碼。而其他的名稱都將作為公用的,可以被其他類/對象使用。記住這隻是一個慣例,並不是Python所要求的(與雙底線首碼不同)。

 

 

 

 

二.類的繼承

#!/usr/bin/python<br /># Filename: inherit.py</p><p>class SchoolMember:<br /> '''Represents any school member.'''<br /> def __init__(self, name, age):<br /> self.name = name<br /> self.age = age<br /> print '(Initialized SchoolMember: %s)' % self.name</p><p> def tell(self):<br /> '''Tell my details.'''<br /> print 'Name:"%s" Age:"%s"' % (self.name, self.age),</p><p>class Teacher(SchoolMember):<br /> '''Represents a teacher.'''<br /> def __init__(self, name, age, salary):<br /> SchoolMember.__init__(self, name, age)<br /> self.salary = salary<br /> print '(Initialized Teacher: %s)' % self.name</p><p> def tell(self):<br /> SchoolMember.tell(self)<br /> print 'Salary: "%d"' % self.salary</p><p>class Student(SchoolMember):<br /> '''Represents a student.'''<br /> def __init__(self, name, age, marks):<br /> SchoolMember.__init__(self, name, age)<br /> self.marks = marks<br /> print '(Initialized Student: %s)' % self.name</p><p> def tell(self):<br /> SchoolMember.tell(self)<br /> print 'Marks: "%d"' % self.marks</p><p>t = Teacher('Mrs. Shrividya', 40, 30000)<br />s = Student('Swaroop', 22, 75)</p><p>print # prints a blank line</p><p>members = [t, s]<br />for member in members:<br /> member.tell() # works for both Teachers and Students </p><p>

 

輸出為:

 

$ python inherit.py<br />(Initialized SchoolMember: Mrs. Shrividya)<br />(Initialized Teacher: Mrs. Shrividya)<br />(Initialized SchoolMember: Swaroop)<br />(Initialized Student: Swaroop)</p><p>Name:"Mrs. Shrividya" Age:"40" Salary: "30000"<br />Name:"Swaroop" Age:"22" Marks: "75" </p><p>

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.