Python 继承之访问三大属性

刚开始学习,有不对的地方希望各位能留言指出,谢谢。

话不多说 上代码:

class Person():
	"""docstring for Person"""
	name = 'IT-man'
	_sex = 'man' #受保护的
	__age = 25  #私有的
	_same = 'person _some'
	same = 'person same'
	def say(self):
		print('My name is  {0}'.format(self.name))

	def run():
		print('Person is running')

class Son(Person):  #继承父类写在里面
	sonId = 89757
	_same = 'son _same'
	same = 'son same'

	def sleep(self):
		print('Son is sleeping...')
		Person.run()
		print('子类 用super()强制调用父类的属性_same:{}'.format(super()._same))
		super().say()

	def emm(self):
		print('emmm....')

	def say(self):
		self.emm()
		super().say()
		print('子类 覆盖/扩展 父类方法')

print()

s=Son()

print('1. 子类访问父类的 公开属性name: {}'.format(s.name)) #公开的
print('2. 子类访问父类的 受保护属性sex: {}'.format(s._sex)) #受保护的
print()
print('3.1 父类的 受保护的属性 和 子类继承的 是同一个吗(占用的内存地址是否相同)?{}'.format(s._sex is Person._sex))
print('3.2 通过子类 更改继承的 受保护属性 sex为 woman')
s._sex = 'woman'
print('3.3 再判断 子类的_sex  和 父类的_sex 还是一样吗(占用的内存地址是否相同)? {}'.format( s._sex is Person._sex))
print('3.4 不一样了,那么 父类的 _sex是: {0}, 子类的_sex 是{1}'.format(Person._sex,s._sex)) #受保护的
print('3.5 换句话说,子类继承父类的属性 是引用,一旦子类更改了继承的属性,就相当于子类对象里也复制了一份独立的属性')
print()
print('4.1 当子类和父类有相同的 受保护属性,那么子类和父类的属性 是同一个吗(占用的内存地址是否相同)?{}'.format(s._same is Person._same))
print('4.2 当子类和父类有相同的 公开属性,那么子类和父类的属性 是同一个吗(占用的内存地址是否相同)?{}'.format(s.same is Person.same))
print('4.3 不相同,说明  当子类和父类 拥有相同属性时,子类访问的时候先访问自己的属性')
print('4.4 在拥有相同属性的情况下,子类 方法 使用 “父类名.属性名” 或 “super().属性、方法”强制访问父类属性或者方法:{0},{1}'.format(Person._same,Person.same))
print('4.5 注意 super() 是获取父类对象  所以 spuer().静态方法 会报错,静态方法属于类,不属于对象,所以只能用类名.静态方法')
print()
try:
	print(s.__age) #私有的 类外不可访问,子类不能访问
except Exception as e:
	print('子类 不能访问 父类的 私有属性 age')
try:
	print(Person.__age) #私有的 类外不可访问,子类不能访问
except Exception as e:
	print('类外 不能访问 私有属性 age')

#子类调用父类属性和方法
s.sleep()
print()
s.say()

本来想写个markdown 笔记,后来想想干脆写出来跑一遍得了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值