Python笔记之面向对象


1,类和对象

#create a class
class fruit:
	def say(self):
		print "hello, python"

if __name__ == "__main__":
	f = fruit()	#不同于Java,不用new
	f.say()

2,属性和方法

#create a class
class fruit:
	price = 0	#类属性
	def __init__(self):
		self.color = "red"
		zone = "china"	#
	
	def getColor(self):
		print self.color
	
	@ staticmethod	#covert ordinary method to static method
	def getPrice():
		print fruit.price
	
	def say(self):
		print "hello, python"

if __name__ == "__main__":
	f = fruit()
	f.say()
	apple = fruit()
	apple.getColor()

构造函数,__init__()方法,可选,不提供有默认的

析构函数用语释放对象占用的资源,__del__()


垃圾回收机制,Python采用引用计数方式。

gc.collect() #显式调用垃圾回收器


3,继承

class Fruit:
	def __init__(self, color):
		self.color = color
		print "fruit's color is %s" % self.color
	
	def sayname(self):
		print "Fruit name"

class Apple(Fruit):
	def __init(self, color):
		Fruit.__init__(self, color)
		print "Apple's color is %s" % self.color
	def sayname(self):
		print "My name is Apple"

class Banana(Fruit):
	def __init__(self, color):
		Fruit.__init__(self, color)
		print "Banana's color is %s" % self.color
	def sayname(self):
		print "My name is banana"

if __name__ == "__main__":
	apple = Apple("red")
	apple.sayname()

	banana = Banana("yelloe")
	banana.sayname()


#抽象类模拟

def abstract():
	raise NotImplementError(“abstract”)

class Fruit:
	def __init__(self):
		if self.__class__ is Fruit:
			abstract()
		print “Fruit”

class Apple(Fruit):
	def __init(self):
		Fruit.__init__(self)
		print "Apple"
	def sayname(self):
		print "My name is Apple"

#多态,多重继承 略

评论关闭