一、编程范式
1.1 概念理解
‘编程范式’是一种编程思想的总称,他是在写程序的时候采用的基本方法和规范。
常见的编程范式有:面向对象、面向过程、函数式、逻辑式、面向切面等等。
选择合适的编程范式可以提高代码的可读性、可维护性、可扩展性,是程序员必备的技能。
1.2 面向过程
面向过程:是一种以过程为核心的编程,强调分析问题的步骤,将这些步骤转换为可执行的
函数或者方法。通常使用顺序结构、选择结构、循环结构。
特点:
-
注重步骤与过程:它更关注于任务的实现过程,而不是职责分工。
-
代码结构清晰:当需求复杂时,代码可能会变得复杂,但结构通常比较清晰。
-
开发难度较大:对于复杂项目的开发,没有固定的套路,因此开发难度相对较高。
1.3 面向对象
面向对象:是一种以对象为核心的编程,对象是由属性和方法组成的。编程的时候首先思考如何是
设计这个事务。
面向对象虽然可以帮助我们在宏观上把握、从整体分析。但是在具体的实现操作,是不是还需要面
向过程。选择合适编程范式,编程范式之间他们是相辅相成。
二、类和对象
2.1 类
类定义:一个抽象的概念,就是生活中的类别。类中所有变量叫做属性,类中的函数通常叫方法。
类的命名:遵从大驼峰命名法(StudentWork)
语法:
class 类名():
类代码(属性,行为)
# 创建一个类 Person , 当类没有对象的时候,运行时类中代码会执行
class Person():
name = '张三' # 类属性
print('这是一个类 Person')
print(Person.name) # 可以打印类中属性, 类名.属性名
2.2 对象
定义:类的具体实例,对象是指某一个客观存在的事务,它具有能识别他唯一性的属性和行为。假设类是人类,那么对象就可以具体到张三这个人。
语法:
对象名 = 类名()
# 创建一个类 Person
class Person():
# 类中的变量称为类属性
name = '张三' # 类属性
age = 26
# 类中的函数称为类方法
def work(self): # 类方法
print('我在工作')
def eat(self):
print('我在干饭')
p1 = Person()
print(f'我的名字叫{p1.name}') # 我的名字叫张三
print(f'我今年{p1.age}岁') # 我今年26岁
p1.work() # 我在工作
p1.eat() # 我在干饭
print(p1) # <__main__.Person object at 0x000001CA7BB37700>
2.2.1 修改属性
类属性是所有对象共有的属性,在创建对象的时候,类共享给所有对象,对象无法修改或者删除类属性,对象可以修改自身的属性。
class Person():
# 类中的变量称为类属性
name = '张三' # 类属性
age = 26
p1 = Person()
p2 = Person()
# 对象可以修改对象自身的属性
p1.name = '周星星'
print(f'我的名字叫{p1.name}') # 我的名字叫周星星
print(Person.name) # 张三,类属性不受对象属性修改的影响
print(f'我的名字叫{p2.name}') # 我的名字叫张三
2.2.2 __init__ 初始化方法
init()类构造方法:在创建类时,我们可以手动添加一个 init()方法,该方法是一个特殊的类实例方法,称为构造方法。构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它。
简单来说,以前函数调用的时候,可以传参,这个 __init__()就是可以实现在实例化对象的时候,直接传参给对象。
语法:
class Employee:
def __init__(self, name, age):
# self.name和self.age就是对象属性
self.name = name
self.age = age
e = Employee('李白', 200)
print(e.name) # 李白
注意:如果__init__
方法有参数的话,需要手动传递参数。相当于定义函数时有形参,调用函数时必须传递实参。
2.2.3 self
self 代表类的实例对象。
class Test:
# self就代表对象
def put(self):
print(self)
t = Test()
print(t) # <__main__.Test object at 0x000001C9468D7700>
t.put() # <__main__.Test object at 0x000001C9468D7700>
注意:self不是python的关键字,我们可以随便改,也是可以正常执行的。但是建议大家不要改,这是一个规范。
2.3 常用方法
类名.__dict__ | 查看类属性 |
类名.__doc__ | 类的文档字符串 |
类名.__name__ | 获取类名 |
类名.__bases__ | 获取这个类的所有父类 |
对象.__class__ | 获取对象的类 |
对象.__dict__ | 查看对象的属性 |