python——面向对象那些事-2

1、一个对象的属性可以是另外一个类创建的对象。

class Gun:
	def __init__(self, model):
		self.model = model
		self.bullet_count = 0
		
	def add_bullet(self, count):
		self.bullet_count+= count
	
	def shoot(self):
		if self.bullet_count <= 0:
			print("[%s] 没有子弹了。。"%self.model)
			return
		self.bullet_count -= 1
		print("[%s] .... [%d]"%(self.model, self.bullet_count))
ak47 = Gun("AK47")
#ak47.add_bullet(50)
#ak47.shoot()

class Soldier:
	def __init__(self, name):
		self.name = name
		self.gun = None
		
	def fire(self):
		if self.gun is None:
			print("[%s] has no gun"%self.name)
			return
		print("冲啊。。。")
		self.gun.add_bullet(50)
		self.gun.shoot()
		
m = Soldier("LanBo")
m.gun = ak47
m.fire()		

2、私有属性就是对象不希望公开的属性,私有方法就是对象不希望公开的方法。
3、属性名或方法名前加两个下划线就变成了私有的。

class Girl:
	def __init__(self, name):
		self.name = name
		self.__age = age
		
	def __secret(self):
	# 在对象的方法内部,是可以访问对象的私有属性的
		print("%s 的年龄是 %d" %(self.name, self.__age))
		
jingjing = Girl("xiangyi", 18)

# 私有属性在外界不能够被直接访问
# 私有方法,通用不允许在外界直接访问

4、类的三大特性

  • 封装,将方法和属性封装在抽象的类中;
  • 继承,实现代码的重用;
  • 多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度。

5、继承:子类拥有父类的所有属性和方法。
6、继承语法:

class 类名(父类名)pass   #占位符

7、方法的重写,父类的方法不能满足子类的需要。

class Dog:
	def eat(self):
		print("eat")
		
	def drink(self):
		print("drink")
		
	def run(self):
		print("run")
		
	def sleep(self):
		print("sleep"
		
	def bark(self):
		print("bark")

class XiaoTianQuan(Dog):
	def fly(self):
		print("fly")
		
	def bark(self):
	#如果子类中重写了父类的方法
	#在使用子类对象调用方法时,会调用子类重写的方法
		print("ffafsdjfajdsjaj")
		
xtq = XiaoTianQuan()

8、对父类方法进行扩展,子类的方法实现包含父类的方法实现,父类原本封装的方法实现是子类方法的一部分,使用super().父类方法 来调用父类方法的执行。

class XiaoTianQuan(Dog):
	def fly(self):
		print("fly")
		
	def bark(self):
		1、针对子类特有需求,编写代码
		print("ffafsdjfajdsjaj")
		2、使用super(),调用原本在父类的方法
		super().bark()
		3、增加其他子类diamond
		print("lsieslj jfjjfsji")

9、多继承可以让子类对象,同时具有多个父类的属性和方法。
10、内置属性 __mro__可以查看方法搜索顺序。
11、object类是python3中所有类的基类。
12、多态以继承和重写父类方法为前提,是调用方法的技巧,不会影响到类的内部设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值