Python06--面向对象基本概念

一、面向对象与面向过程

面向过程:实现具体的过程,为因果关系。优点是,对于业务逻辑比较简单的程序,可以做到快速的开发,前期投入成本低;缺点是,难解决非常复杂的业务逻辑,代码间的耦合度较高,只要一个环节出现问题,整个程序都会受到影响,没有独立的概念,所以组件无法复用。

面向对象:把构成问题的事务分解成各个对象,建立对象不是为了完成每一个步骤,而是为了描写某个事务在整个解决问题步骤中的行为,主要的特点是关注对象能完后才能哪些功能。优点是耦合度低,扩展性强,容易解决现实世界中更复杂的业务逻辑,容易维护,易复用,易扩展;缺点是性能较低,学习难度大。

二、类和对象

1,概念定义

类: 是对一些具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。
对象:是 由类创建出来的一个具体存在,可以直接使用。

2,类和对象的关系

  1. 类是模板,是对一些具有相同特征或者行为的事物的一个统称,是抽象的。
  2. 对象 是 由类创建出来的一个具体存在。
  3. 类是不可以直接使用的。
  4. 对象是可以直接使用的。

三、类

1,类的构成

  1. 类的名称:
    eg : 狗(dog)
  2. 类的属性:
    eg :品种、毛色、性别、名字
  3. 类的行为:
    eg :叫、吃、摇尾巴

2,类的定义

语法格式:
class 类名:
	方法列表
# class Game: #经典类定义形式
# class Game():

# 新式类定义格式
class Game(object):
    def begin(self):
        print("Hello World!")

代码释义:

  1. 类可以分为两种形式:经典类与新式类。
  2. object是python中所有类的顶级父类。
  3. 类名的命名规则按照“大驼峰命名法”,首字母一般大写。
  4. begin是一个示例方法,第一个参数一般是self,表示示例本身,也可以将self换位其他,self是一个变量,这个变量指实例对象。

四、对象

1,对象的定义

语法格式:
对象1 = 类名()
对象2 = 类名()
对象3 = 类名()
# class Game: #经典类定义形式
# class Game():

# 新式类定义格式
class Game(object):
    def begin(self):
        print(self)
        print("HELLO WORLD!!!")

# Game 这个类实例化一个对象game1
game1 = Game()
# 对象调用实例方法begin(),并执行begin()方法里面的代码块
game1.begin()
#打印对象内存中的地址,与begin()方法里面的print(self)一致。
print(game1)
# 以内存地址的十进制形式显示
print(id(game1))

显示结果:
对象的定义

2,添加和获取对象的属性

定义一个Enemy敌人类,添加get_attack被攻击与set_attack主动攻击的方法,并且给

class Enemy(object):
    def get_attack(self):
        print("敌人受到攻击!")
    def set_attack(self):
        print("敌人开始攻击!")

thanos = Enemy()
# 给对象添加属性以及对应的属性值
thanos.name = '珊珊'  # 姓名
thanos.hp = 999      # 生命值
thanos.attack = 888  # 攻击力
thanos.DEF = 3999    # 防御力

# 获取对象的属性值
print("敌人 %s 的生命值 : %d" % (thanos.name,thanos.hp))
print("敌人 %s 攻击力 : %d" % (thanos.name,thanos.attack))
print("敌人 %s 防御力 : %d" % (thanos.name,thanos.DEF))

# 获取对象的属性值
thanos.set_attack()
thanos.get_attack()

显示结果:
添加获取对象属性

3,通过self获取对象属性

实例方法内通过self()和获取对象属性。

class Enemy(object):
    def get_attack(self):
        print("敌人受到攻击!")
    def set_attack(self):
        print("敌人开始攻击!")
    def print_info(self):
        print("敌人 %s 的生命值 : %d" % (self.name,self.hp))
        print("敌人 %s 攻击力 : %d" % (self.name,self.attack))
        print("敌人 %s 防御力 : %d" % (self.name,self.DEF))

thanos = Enemy()
# 给对象添加属性以及对应的属性值
thanos.name = '珊珊'  # 姓名
thanos.hp = 999      # 生命值
thanos.attack = 888  # 攻击力
thanos.DEF = 3999    # 防御力

# 获取对象的属性值
thanos.print_info()    #只需要调用实例方法print_info就可获取属性
thanos.set_attack()
thanos.get_attack()

显示效果:
self方法获取对象的属性

你可能感兴趣的:(Python,python)