1. 程式人生 > >Python學習--面向物件的例項

Python學習--面向物件的例項

  • 下面的例子實現了學校成員類,這個類登記成員的姓名,並且統計學校的總人數。
  • 老師類繼承學校成員類,建立物件的時候總人數加一,老師類登記老師的工資。
  • 學生類繼承學校成員類,總人數也會加一,學生類登記學生的成績。
  • 物件消亡的時候,總人數會減一。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: SchoolMember.py
# 面向物件的例項,學校成員類

class SchoolMember:
	# 總人數,這個是類的變數
	sum_member = 0
	
	# __init__方法在類的物件被建立時執行
	def __init__(self, name):
		self.name = name
		SchoolMember.sum_member += 1
		print "學校新加入一個成員:%s" % self.name
		print "現在有成員%d人" % SchoolMember.sum_member
	
	# 自我介紹
	def say_hello(self):
		print "大家好,我叫:%s" % self.name

	# __del__方法在物件不使用的時候執行
	def __del__(self):
		SchoolMember.sum_member -= 1
		print "%s離開了,學校還有%d人" % (self.name, SchoolMember.sum_member)

# 老師類繼承學校成員類
class Teacher(SchoolMember):
	def __init__(self, name, salary):
		SchoolMember.__init__(self, name)
		self.salary = salary
	
	def say_hello(self):
		SchoolMember.say_hello(self)
		print "我是老師,我的工資是:%d" % self.salary
	
	def __del__(self):
		SchoolMember.__del__(self)
# 學生類
class Student(SchoolMember):
	def __init__(self, name, mark):
		SchoolMember.__init__(self, name)
		self.mark = mark
	
	def say_hello(self):
		SchoolMember.say_hello(self)
		print "我是學生,我的成績是:%d" % self.mark
	def __del__(self):
		SchoolMember.__del__(self)

t = Teacher("老黃", 3000)
t.say_hello()
s = Student("小河", 77)
s.say_hello()
執行結果: 學校新加入一個成員:老黃 現在有成員1人 大家好,我叫:老黃 我是老師,我的工資是:3000 學校新加入一個成員:小河 現在有成員2人 大家好,我叫:小河 我是學生,我的成績是:77 小河離開了,學校還有1人 老黃離開了,學校還有0人