文章目录
面向对象(object)编程
对象是指现实中的物体或实体
面向对象:把一切看成对象(实例),让对象和对象之间建立关联关系
对象的特征:对象有很多的属性(名词: 姓名,性别,年龄);
对象有很多行为(动词: 学习,吃饭,睡觉,看书)
类
类是拥有相同属性和行为的对象分为一组,即为一个类,类是用来描述对象的工具,用类可以创建同类对象。
车(类)-----------> BYD E6(京A.88888) 实例
车(类)-----------> BMW X5(京A.00000) 实例
狗(类)----------->小京巴(户籍号:000001)
----------->导盲犬(户籍号:000002)
int(类)----------->100(对象/实例)
----------->200(对象/实例)
类的创建语句:
语法:class 类名(继承列表):
‘’‘类的文档字符串’’’
实例方法定义(类内的函数称为方法method)
类变量定义
类方法定义
静态方法定义
作用:创建一个类
用于描述词类对象的行为和属性
类用于创建此类的一个或多个对象(实例)
示例:
# 此示例示意类的定义
class Dog: # 定义一个类,类名为Dog
pass
dog1 = Dog() # 构造函数,创建Dog类的对象
print(id(dog1)) # 4378526216
dog2 = Dog() # 创建Dog类的另一个对象
print(id(dog2)) # 4382983672
# 类似于如下语法:
int1 = int()
int2 = int()
类 对象 实例
class | object | instance
构造函数
表达式:
类名([创建传参列表])
作用:创建这个类的实例对象,并返回此实例对象的引用关系
实例(对象)说明:实例有自己的作用域和名字空间,可以为该实例添加实例变量(属性);实例可以调用类方法和实例方法;实例可以访问类变量和实例变量
示例:
class Dog:
pass
dog1 = Dog()
实例方法:
语法:
class 类名(继承列表):
def 实例方法名(self, 参数1, 参数2, …):
‘’‘实例方法的文档字符串’’’
语句块
作用:用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
说明:实例方法实质是函数,是定义在类内的函数;
实例方法至少有一个形参,第一个形参代表调用这个方法的实例, 一般命名为’self’
实例方法的调用语法:
实例.实例方法名(调用参数)
或
类名.实例方法名(实例,调用传参)
示例:
# 此实例示意如何用实例方法(method)来描述Dog类的行为
class Dog:
def eat(self, food):
'''此方法用来描述小狗吃东西的行为'''
print("小狗正在吃:", food)
def sleep(self, hour):
print("小狗睡了", hour, "小时")
# 创建一个Dog类的实例:
dog1 = Dog()
dog1.eat("狗粮") # 小狗正在吃: 狗粮
dog1.sleep(10) # 小狗睡了 10 小时
# dog1.play("球") # 对象不能调用类内不存在的方法
# 创建另一个Dog对象
dog2 = Dog()
dog2.eat("骨头")
dog2.sleep(2)
# 可以用下面的方法调用方法
Dog.eat(dog2, '苹果')
属性(attribute)
属性也叫实例变量,每个实例都可以有自己的变量,此变量称为实例变量(也叫属性)
属性的使用语法:实例.属性名
赋值规则:首次为属性赋值则创建此属性;再次为属性赋值则改变属性的绑定关系
作用:用来记录对象自身的数据
实例:
# 此示例示意为对象添加属性
class Dog:
pass
# 创建第一个对象
dog1 = Dog()
dog1.kinds = '京巴' # 添加属性kinds
dog1.color = '白色' # 添加属性color
dog1.color = '黄色'
print(dog1.color, '的', dog1.kinds) # 访问属性
dog2 = Dog()
dog2.kinds = '牧羊犬'
dog2.color = '灰色'
实例方法和实例变量(属性)结合在一起使用:
示例:
class Dog:
def eat(self, food):
print(self.color, '的', self.kinds, '正在吃', food)
# 创建第一个对象
dog1 = Dog()
dog1.kinds = '京巴' # 添加