面向过程:程序设计的核心是过程(流水线式思维),一般用于小脚本。
面向对象:核心是对象,要理解对象为何物,适合复杂得程序。思想 :角色的抽象,创建类,创建角色(实例化),操作这些实例
先有类才有对象,类为一个模子,对象为具体。
类与对象,举例:dict——类,d = {‘k’:‘v’}——对象;list——类,[1,2]——对象。
所有的类相关的内容
- 定义类
- init方法
- self是什么 self拥有属性都属于对象
- 类中可以定义静态属性
- 类中可以定义方法,方法都有一个必须传的参数self
- 实例化
- 实例、对象
- 对象查看属性
- 对象调用方法
考虑使用面向对象的情况:
- 当有几个函数,需要反反复复传入不同的参数的时候,就可以考虑面向对象,这些参数都是对象的属性;
- 非常明显的处理一类食物,这些食物都具有相似的属性和功能。
自定义类
类名的作用 就是操作属性 查看属性
格式
def 函数名():
pass
class 类名:
静态属性 = 'aaa'
def __init__(self):pass
print(类名.属性)
创建类,举例说明
class Person: # 类名
country = 'China' # 创造了一个只要是这个类就一定有的属性
# 类属性 静态属性
def __init__(self,*args): # 初始化方法,self是对象,是一个必须传的参数
# self就是一个可以存储很多属性的大字典
self.name = args[0] # 往字典里添加属性的方式发生了一些变化
self.hp = args[1]
self.aggr = args[2]
self.sex = args[3]
def walk(self,n): # 方法,一般情况下必须传self参数,且必须写在第一个
# 后面还可以传其他参数,是自由的
print('%s走走走,走了%s步'%(self.name,n))
创建对象
print(Person.country) # 类名 可以查看类中的属性,不需要实例化就可以查看
alex = Person('狗剩儿',100,1,'不详') # 类名还可以实例化对象,alex对象 # 实例化
print(alex.__dict__) # 查看所有属性
print(alex.name) # 查看属性值
print(alex.hp) # 查看属性值
alex.walk(5