python核心语法06-面向对象基础
1.面向过程编程
核心思想:把一个需求分解成一系列要执行的步骤,然后按照步骤依次执行这些任务(关注的是流程、步骤)。
适用场景:面向过程编程非常直接,适合简单、线性的任务。
2.面向对象编程
对象可以理解为现实中具体的人/物在程序中的数字化身(万物皆对象)。 它把一个人/物的特征和功能打包到一起,是面向对象编程的基本单元。
3.(1)类:描述的是一组具有相同属性(特征)和方法(功能/行为)的模板。
(2)对象:对象是类的实例,是基于类创建出来的 (实例对象)。
# 定义类1
class 类名:
pass
# 创建对象
对象名 = 类名()
对象名.属性名1 = 属性值1
对象名.属性名2 = 属性值2
# 定义类
class Car:
pass
# 创建对象
c1 = Car()
c1.brand = "BMW"
c1.name = "X5"
c1.price = 500000
print(c1.__dict__)
说明:
(1) 类名的命名规范,遵循大驼峰命名法,每个单词的首字母都是大写,单词之间没有分隔符,比如:UserInfo,UserAccount 。
(2) __dict__是Python中用户自定义类实例的一个特殊属性,用于以字典形式存储对象的属性 。
# 定义类2
class 类名:
def __init__(self, 参数列表):
self.属性名 = 参数值
self.属性名 = 参数值
# 创建对象
对象名 = 类名(参数列表)
# 定义类
class Car:
def __init__(self, c_brand, c_name, c_price):
self.brand = c_brand
self.name = c_name
self.price = c_price
# 创建对象
c1 = Car("BMW", "X5", 500000)
print(c1.__dict__)
说明:
(1) 定义在类的外面的称之为函数,定义在类中的函数称之为方法
(2) __init__ 是初始化方式,对象创建时自动调用,主要用于设置对象的初始状态(设置对象属性)
(3) self是类中定义的方法的第一个参数,表示当前创建的实例对象
4.实例方法
class Car:
def __init__(self, brand, name, price):
self.brand = brand
self.name = name
self.price = price
def running(self):
print(f"{self.brand} {self.name} 正在高速行驶...")
def total_cost(self, discount, rate):
return self.price * discount + self.price * rate
c1 = Car("BMW", "X5", 500000)
total_price = c1.total_cost(0.9, 0.1)
print(f"提车总价为: {total_price:.0f}")
c1.running()
5.魔法方法
(1) 魔法方法是指Python中提供的以双下划线开头和结尾的特殊方法,用于定义类的特殊行为,比如:__init__。
(2) 魔法方法是不需要我们手动调用的,Python会在合适的时机自动调用。

class Car:
def __init__(self, brand, name, price):
self.brand = brand
self.name = name
self.price = price
def running(self):
print(f"{self.brand} {self.name} 正在高速行驶...")
def __str__(self):
return f"{self.brand} {self.name} {self.price}"
def __eq__(self, other):
return self.price == other.price and self.brand == other.brand and self.name == other.name
def __lt__(self, other):
return self.price < other.price
c1 = Car("BMW", "X5", 500000)
print(c1)
c2 = Car("BMW", "X5", 500000)
print(c2)
print(c1 == c2)
print(c1 < c2)
说明:Python中提供的__xxx__形式的特殊方法 魔法方法无需手动调用,Python会在合适的时机自动调用
6.属性
(1) 实例属性:实例属性属于每个具体对象的属性,每个对象都是独立的。(各个对象特有的数据)
(2) 类属性:类属性是属于类本身的属性,所有实例共享的。(所有对象共享的数据或配置)(1)
class Car:
def __init__(self, c_brand, c_name, c_price):
self.brand = c_brand
self.name = c_name
self.price = c_price
def running(self):
print(f"{self.brand} {self.name} 正在高速行驶...")
c1 = Car("BYD", "汉", 180000)
c2 = Car("Tesla", "Model Y", 260000)
7.异常:就是程序运行过程中出现的错误,它会中断程序的正常执行流程。
作用: 保证数据、逻辑的正确性,避免程序执行混乱 在开发阶段,尽量发现更多的问题,尽早解决问题,保障程序正常执行。异常不是坏东西,而是编写健壮程序的重要工具
常见异常有:NameError、TypeError、IndexError、KeyError、ValueError
异常处理:程序运行过程中出现异常,有两种处理方案:
(1) 不做处理:整个程序因为一个Bug,中断执行。
(2) 捕获异常:按照我们自己的处理方式,处理完异常,程序继续执行。
try:
可能出现异常的业务代码1
可能出现异常的业务代码2
...
except [异常类型 as 变量名]:
出现异常时的预案
[finally:
不管是否出现异常, 都会执行的代码 ]
try:
print("= = = = = = = = = = = =")
print(my_name)
print("= = = = = = = = = = = =")
except NameError as e:
print("程序运行报错, 错误信息: ", e)
finally:
print("释放资源 ~")
try:
print("ABC".hello)
except NameError as e:
print("。名字不存在,请检查,具体信息:",e)
except ZeroDivisionError as e:
print("0不能做被除数,请检查,具体信息:",e)
except IndexError as e:
print("索引错误,请检查,具体信息:",e)
except Exception as e:
print("其他错误,请检查,具体信息:",e)
finally:
print("无论正常执行还是出现异常,都要释放资源~")
8.异常传递:异常传递就是异常在函数调用中层层上报的过程,直到有人处理它,或者程序崩溃。
def fun1():
print("fun1 ... running ...")
fun2()
def fun2():
print("fun2 ... running ...")
fun3()
def fun3():
print("fun3 ... running ...")
print(my_color)
if __name__ == '__main__':
fun1()

更多推荐



所有评论(0)