python學習之路-第七天-python物件導向編程簡介

來源:互聯網
上載者:User

標籤:私人   資源   obj   ini   oop   details   mem   習慣   關鍵字   

物件導向編程

在python中,同樣是類和對象作為重要的組成部分。

而且在python中基礎資料型別 (Elementary Data Type)如int都是有封裝類的,都有自己的方法,應該是和java裡面的Integer類似吧

類包括域和方法:域也就是類或對象中的變數,方法就是類裡面聲明的函數

self關鍵字:

相當於java中的this,下面是個例子:

#!/usr/bin/python# Filename: method.pyclass Person:    def sayHi(self):        print ‘Hello, how are you?‘p = Person()p.sayHi()# This short example can also be written as Person().sayHi()

你一定很奇怪Python如何給self賦值以及為何你不需要給它賦值。舉一個例子會使此變得清晰。假如你有一個類稱為MyClass和這個類的一個執行個體MyObject。當你調用這個對象的方法MyObject.method(arg1, arg2)的時候,這會由Python自動轉為MyClass.method(MyObject, arg1, arg2)——這就是self的原理了。這也意味著如果你有一個不需要參數的方法,你還是得給這個方法定義一個self參數。

init方法的使用和說明(相當於建構函式):

用來在類被執行個體化後馬上就被啟動並執行一段程式,用來作為對象的初始化操作

#!/usr/bin/python# Filename: class_init.pyclass Person:    def __init__(self, name):        self.name = name    def sayHi(self):        print ‘Hello, my name is‘, self.namep = Person(‘qjx‘)p.sayHi()# This short example can also be written as Person(‘qjx‘).sayHi()
$ python class_init.pyHello, my name is qjx

del方法的使用和說明(相當於解構函式):

他是用在對象被釋放後啟動並執行一段程式,用來釋放資源等操作,一般在程式消逝後自動進行,如果要手動釋放,就要顯示的調用del語句

一般的,對於變數和方法的範圍

  • __privatevar(兩個底線首碼)python會把它作為私人變數

  • 還有一個慣例,也就是平常人們的命名習慣,如果某個變數只想在類或對象中使用,就應該以單底線首碼。

  • 其他的名稱都將作為公用的,可以被其他類/對象使用

繼承(SchoolMember類被稱為 基本類 或 超類 。而Teacher和Student類被稱為 匯出類 或 子類 )

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

Python在子類中不會自動調用基本類的constructor,你得親自專門調用它。

Python中可以多重繼承

python學習之路-第七天-python物件導向編程簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.