一、面向对象编程(Object-Oriented Programing)
面向过程:一件事分有好几个步骤(而且要理清流程),每个步骤可以封装一个函数。对于复杂的事情不好理清流程。面向对象是把一切看成对象(实例),对象和对象之间用方法(行为)建立关联关系;面向对象是一种思想。
术语:
类 对象 实例
class object instance
对象是指现实中的物体或实体
面向对象
把一切看成对象(实例), 用各种对象之间的关系来描述事务
对象的特征
对象有很多属性(名词)
姓名,性别, 年龄, ...
对象有很多行为(动作,动词)
学习,吃饭,睡觉,工作, ....
类
拥有相同属性和行为的对象分为一组,即为一个类
类是用来描述对象的工具,用类可以创建此类的对象(实例)
二、类的基础概念
1、类的创建
class 语句
语法
class 类名(继承列表):
''' 类文档字符串'''
实例方法(类内的函数methd)定义
类变量(class variabe)定义
类方法(@classmethod)定义
静态方法(@staticmethod)定义
作用
创建一个类
用于描述对象的行为和属性
用于创建此类的一个或多个同类对象(实例)
说明
继承列表可以省略,省略继承列表表示类继承自object
类名必须为标识符
类名实质上是变量,它绑定一个类
2、类的作用
可以用类创建一个或多个此类的对象(实例)
类内的变量和方法能被此类所创建的所有实例所共同拥有
3、类的说明
类名必须是标识符(与变量命名规则相同,建议首字母大写)
类名实质上就是变量,塔绑定一个类实例
类的定义最后面要加两个空格以告诉解释执行器,类的定义已经结束
三、类的使用
1、构造函数
构造函数调用表达式
类名([创建传参列表])
注:[ ]里的内容代表可省略
作用
创建这个类的实例对象,并返回此实例对象的引用关系
示例
class Dog: # 定义一个类
pass
dog1 = Dog() # 用类来创建一个对象用dog1绑定
print(id(dog1)) # 打印dog1所在的内存地址
dog2 = Dog() # 创建第二个对象 用dog2绑定
print(id(dog2))
print(dog1 is dog2) # False 判断两只狗是不是同一只狗
2、实例说明
实例有自己的作用域或名字空间,可以为该实例添加实例变量(也叫属性)实例可以调用类的方法
实例可以访问类中的类变量
3、实例属性 attribute (也叫实例变量)
每个实例可以有自己的变量,称为实例变量(属性)
属性的使用语法
实例.属性名
属性的赋值规则(同变量规则相同)
a、首次为属性赋值则创建此属性
b、再次为属性赋值则改变属性的绑定关系
示例
class Dog:
pass
dog1 = Dog()
dog1.kinds = “京巴” # 为dog1绑定的实例添加kinds属性
dog1.color = “白色” # 添加属性
print(dog1.kinds, dog1.color) # 访问属性
dog1.color = “黄色” # 改变属性
print(dog1.color)
属性的删除
del 语句
语法
del 实例.属性名
示例:
class Student:
pass
stu = Student()
stu.name = “xiaoming”
print(stu.name)
del stu.name # 删除此属性
print(stu.name) # 属性错误,因为属性不存在了