目录
面向对象编程思想
所谓的编程思想,就是人们利用计算机来解决实际问题的一种思维方式,常见的编程思想有面向过程和面向对象,很多计算机语言的语法各不相同,但是它们基本的编程思想却是差不多的,而Python是同时支持面向对象和面向过程的编程语言!
面向对象设计思路
1.思考这个系统由哪些对象组成
2.定义对象的类,设置其属性和方法
3.让对象实现相关的功能或方法,从而完成具体的业务
面向对象基本概念
1.对象的概念:
对象,object,现实业务逻辑的一个动作实体就对应着OOP编程中的一个对象!
① 对象使用属性(property)保存数据!② 对象使用方法(method)管理数据!
2.类的概念:
类本来就是对现实世界的一种模拟,在现实生活中,任何一个实体都有一个类别,类就是具有相同或相似属性和动作的一组实体的集合!所以,在Python中,对象是指现实中的一个具体的实体,而既然现实中的实体都有一个类别,所以,OOP中的对象也都应该有一个类!
3.类的定义:
# 经典类:不由任意内置类型派生出的类,称之为经典类
class 类名:
代码
......
# 新式类
class 类名():
代码
......
# 定义一个人类
class Person():
def eat(self):
print('我喜欢吃零食')
def drink(self):
print('我喜欢喝果汁')
注意:类名遵循一般的标识符命名规则,有关标识符命名规则,之前的文章中有讲。
4.类的实例化(创建对象)
对象名 = 类名()
# 创建对象
p1 = Person()
print(p1) # <__main__.Person object at 0x1013ecf50>
# p1对象调用实例方法
p1.eat()
p1.drink()
5.self关键字
在类中,有一个特殊关键字self,其指向类实例化对象本身。
# 1. 定义类
class Person():
def eat(self):
print('我喜欢吃零食')
print(self)
# 2. 创建对象
p1 = Person()
print(p1) # <__main__.Person object at 0x1058bced0>
p1.eat() # 我喜欢吃零食
# <__main__.Person object at 0x1058bced0>
p2 = Person()
print(p2) # <__main__.Person object at 0x1058bcf50>
6.属性
属性即是特征,比如:人的姓名、年龄、身高、体重…都是对象的属性。
对象属性既可以在类外面添加和获取,也能在类里面添加和获取。
6.1在类的外部添加属性
对象名.属性名 = 值
p1.name = '老王'
p1.age = 18
p1.address = '北京'
6.2在类的内部初始化属性
class Person():
# 定义初始化功能的函数
def __init__(self):
# 添加实例属性
self.name = '老王'
self.age = 18
self.address = '北京'
def print_info(self):
# 类里面调用实例属性
print(f'姓名:{self.name}, 年龄:{self.age},地址:{self.address}')
p1 = Person()
p1.print_info()
注意:这里__init__(self)是python的魔法方法,它在实例化对象时被自动调用。
6.3在类的外面获取属性
对象名.属性名
print(f'姓名:{p1.name}')
print(f'年龄:{p1.age}')
print(f'地址:{p1.address}')
6.4在类的里面获取属性
self.属性名
# 1. 定义类
class Person():
def print_info(self):
# 类里面获取实例属性
print(f'姓名:{self.name}')
print(f'年龄:{self.age}')
print(f'地址:{self.address}')
# 2. 创建对象
p1 = Person()
# 3. 添加属性
p1.name = '老王'
p1.age = 18
p1.address = '北京'
p1.print_info()
常见的魔法方法
在Python中,__xxx__()的函数叫做魔法方法,指的是具有特殊功能的函数。
1.__init__()
2.__str__()当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了`__str__`方法,那么就会打印从在这个方法中 return 的数据。
3.__del__()当删除对象时,python解释器也会默认调用__del__()方法。