# 面向过程
# 做一件事情,排出步骤, 第一干什么,第二部干什么,如果出现问题A,做什么处理,如果出现B做什么处理。
# 代表语言是 C
# 面向对象 OOP 方法论的问题
# 一种认识世界,分析世界的方法论。 讲万事万物抽象为各种对象。
# 类 class
# 类是抽象的概念,是万事万物的抽象。是一类食物的共同特征的集合
# 类 用计算机语言来描述,是属性和方法的集合
# python里 一切皆为对象
# 对象是数据和操作的封装
# 对象是独立的,但是,对象之间可以互相作用
# OOP 是最接近人类认知的编程范式
# 面向对象的3要素
# 1. 封装
# 组装: 把数据和操作组装到一起
# 对外只暴露一些接口,使用该对象的人不必关心内部实现
# 2. 继承
# 为了复用。 继承来的东西就不用再写一遍了。
# 3. 多态
# class Person: #类 必须使用 class 关键字
# """
# Person class
# """
# x = "abc" # 类属性
# def showme(self): # self 是整个类的实例 . showme 是实例方法
# return __name__ # 类名 首字母要大写
# # 定义完成后,就生成一个类对象。
# print(Person)
# print(Person.__name__)
# print(Person.__doc__)
# print(Person.showme) #<function Person.showme at 0x00000000024FE040>
# p = Person() # 实例化一个 p对象
# # print(Person.showme(p))
# # print(Person.x)
# print(p.showme()) # showme() takes 1 positional argument but 2 were given。 解释器会自动的注入第一参数 self
# tom = Person() # 每次实例化后获得的实例,都是不同的实例
# print(p is tom)
# class Person:
# def __init__(self):
# print('init')
# tom = Person() # 分为2个阶段:
# # 1: 实例化
# # 2: 初始化
class Person:
p = 10
def __init__(self, name, age): #初始化方法。 其它语言习惯用构造方法:constructor
print('init')
self.name = name
self.age = age
def show_age(self):
print(f"{self.name} 的年龄是 :{self.age}")