python面向对象学习
Posted yeyeyeyey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面向对象学习相关的知识,希望对你有一定的参考价值。
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
面向对象三个概念:
1.封装
即把客观事物封装成抽象的类,并且类可以把自己的数据和方法让可信的类进行操作,对不可信的进行隐藏
class Cat(Animal):
def bite(self):
print("猫咪咬")
lanmao = Cat()
2.继承
一个类可以继承其他一个类的属性和方法,比如我们定义一个动物类和猫咪类,猫咪继承动物,这样实例化一个猫咪对象时,猫咪也继承了动物类的跑方法
如果需要继承
class Animal:
def run(self):
print("跑得快")
class Cat(Animal):
def bite(self):
print("猫咪咬")
lanmao = Cat()
lanmao.run()
>>跑得快
使用继承时,通常会用到super()方法,在python2中,通常需要在super()中加上Object,python3不需要添加,可以使用super()提高代码的可复用性、可维护性
以下函数,Cat类继承Animal中的初始化中的方法
class Animal:
def __init__(self,life):
self.life = life
print(self.life)
class Cat(Animal):
def __init__(self,life):
super().__init__(life)
self.life = life
a = Animal(223)
mimi = Cat(45)
>>223
45
3.多态
看如下代码,当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。在子类调用run方法时,无论子类怎样调用,都不会影响到其他子类继承父类的方法去调用使用
class Animal:
def run(self):
print("跑得快")
class Cat(Animal):
def bite(self):
print("猫咪咬")
def run(self):
print("猫咪在跑")
class Dog(Animal):
def laugh(self):
print("小狗在笑")
lanmao = Cat()
wangcai = Dog()
lanmao.run()
wangcai.run()
>>猫咪在跑
跑得快
在业务编写时,需要发掘重要的业务领域概念,建立业务领域概念之间的关系,找名词,加属性,连关系
其中对象之间的还有各种依存关系,限于篇幅和笔者个人能力不一一赘述
class Role(object):
def __init__(self,name,role,weapon,attack,life_value = 100,money = 10000):
self.name = name
self.role =role
self.weapon = weapon
self.life_value = life_value
self.money = money
self.attack = attack
def shot(self,other):
print('%s 在射击' %self.name)
print('%s跟%s在中路拼枪' %(self.name,other.name))
self.life_value = int(self.life_value)-int(other.attack)
if self.life_value > 0:
print('%s活下来了,还剩下%s血'%(self.name,self.life_value))
else:
print('%s挂了,充点钱吧,充钱才能更强'%self.name)
def get_shot(self,attract):
# self.life_value -= int(attract)
print('%s 被射中了,还剩下%s 血' %(self.name,self.life_value))
def arm(self,gun):
self.attack =int(self.attack)+int(gun.attack)
self.weapon = gun.name
self.money =int(self.money)-int(gun.money)
print('%s %s 装备了%s,攻击力提升啦,竟然达到了惊人的%s 点' %(self.role,self.name,
self.weapon,self.attack))
print('%s 买了%s,还剩下 %s元钱' %(self.name,gun.name,self.money))
class Gun(object):
def __init__(self,name,attack,money):
self.name=name
self.attack = attack
self.money = money
ak47 = Gun('AK47','89','3000')
an94 = Gun('AN94','90','5000')
lsj = Role('lsj','police','knief',10)
wyz = Role('wyz','bandit','knief',10)
lsj.arm(ak47)
wyz.arm(an94)
lsj.shot(wyz)
wyz.shot(lsj)
以上是关于python面向对象学习的主要内容,如果未能解决你的问题,请参考以下文章