一、面向对象基本概念
- 世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。
- 面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。
- 关注焦点----谁来做
二、类和对象
- 类是模板,对象 是根据 类 这个模板创建出来的,应该 先有类,再有对象
- 类 只有一个,而 对象 可以有很多个,不同的对象 之间 属性 可能会各不相同
- 类 中定义了什么 属性和方法,对象 中就有什么属性和方法,不可能多,也不可能少
注意:在程序开发中,要设计一个类,通常需要满足一下三个要素:
1.类名 这类事物的名字,需要满足大驼峰命名法
2.属性 这类事物具有什么样的特征
3.方法 这类事物具有什么样的行为
三、语法结构:
# 创建类
class 类名:
def 方法1(self, 参数列表):
pass # pass是占位符
def 方法2(self, 参数列表):
pass
# 创建对象
对象引用 = 类名(参数列表)
三、self 参数:
- 在 类的外部,通过
变量名
访问对象的 属性和方法 - 在 类封装的方法中,通过
self
访问对象的 属性和方法
- self使用示例:
class BearToy:
def speak(self):
print("你好我是" + self.color + "色的泰迪~")
bear01 = BearToy()
bear01.color = "red" # 给熊添加颜色属性并赋值
bear01.speak()
bear02 = BearToy()
bear02.color = "yellow" # 给熊添加颜色属性并赋值
bear02.speak()
四、__init__初始化方法:
-
__init__()
方法在创建对象时会被自动调用 -
__init__()
是专门用来定义一个类 具有哪些属性的方法 -
__init__()
使用示例:
class BearToy: # 定义类BearToy
def __init__(self, color):
print("对象初始化")
self.color = color
def speak():
print("颜色: " + self.color + ",大小:" + self.size)
if __name__ == "__main__":
tidy01 = BearToy("red", "big")
tidy01.speak()
tidy02 = BearToy("yellow", "small")
tidy02.speak()
五、函数编程练习:
需求:
- 创建游戏角色类
- 游戏人物角色拥有名字、武器等属性
- 游戏人物具有攻击的方法
- 武器通过武器类实现
class Role: #定义类Role【拥有相同属性和方法的对象的集合】
def __init__(self, name, weapon): #__init__() 可以指定每一个对象独有的属性
self.name = name #self 为实例本身的名称
self.weapon = weapon #self 为实例本身的名称
#类方法,即类中定义的函数,可以由对象去调用
def attack(self, target): #self 为实例本身的名称
print('我是%s, 正在攻击%s' % (self.name, target))
if __name__ == '__main__':
lb = Role('吕布', '方天画戟') #根据Role类创建一个具体的对象lb
print(lb.name, lb.weapon) #打印对象lb的名字和武器
lb.attack('张飞') #让对象调用类方法attack()