python进阶六_封装与继承

本文介绍了Python中的封装和继承概念。讲解了@property装饰器的作用,对比了Python中两种方法绑定的区别,并强调了使用@property进行属性访问控制。接着讨论了继承的原则,如优先考虑组合、子类构造方法需调用父类构造方法等。提到了Python的多重继承和C3线性化算法(MRO),并通过实例分析了多重继承的初始化顺序和避免初始化冲突的方法。
摘要由CSDN通过智能技术生成

转载请注明出处http://blog.csdn.net/liygcheng/article/details/22905439

我们先来看一个简单的例子:

#author liygcheng 2014-04-04
#object-oriented python 

class Animal():
	def __init__(self):
		self.__name = "Animal"
		print(self.__name)
	def accessMethod(self):
		print("I am a animal,and my name is:")
		print(self.__name)
		print("\n The Additional message is:")
		self.__innerAccess()
	def __innerAcess():
		print("this can not be seen!")
	@staticmethod
	def  staticMethod():
		print("this is a  static method!")
	@property #python中的属性设置
	def name(self):
		return self.__name
	@name.setter
	def name(self, value):
		self.__name = value
	@name.deleter
	def name(self):
		del self.__name	

例子中的其他问题暂且先不考虑,因为我在编译的时候,出了问题,总是会出现“IndentationError: unindent does not match any outer indentationlevel”这样的错误,在网上一查之后发现原来是混用了Tab键和空格。。下面我们开始看看代码中出现的一些知识点:

私有函数和静态方法在之前的类介绍中详细阐述过,此不再赘述,这里我们把重点放在这个@property这里,

在C++或者Java中,我们经常会遇到setter和getter,在这里@property的作用类似,需要注意的是,这里面的同一属性的三个函数要同名(本例中指的是name),当我们在运用的时候,就可以根据需要,例如是否只读等进行设置。其实除此之外,在python2.6之前,还有一种绑定的方法,先来看一个例子:


那么另一种绑定的方法是什么呢?我们来看一下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值