类,对象:
类 具有相似功能的一类事物,人类,犬类,猫类等等。
对象: 类的具体表现
面向对象:
1、第一个优点:面向对象是一类相似功能函数的集合体
更清晰化,更规范化
class LoginHandler: # 登录和注册归属于一类 (calss 驼峰体 结构) def login(self): pass def regisgter(self): pass
class ShoppingCar: # 购物车归为一类,含有购物,已购买信息,未购买信息等功能 def shopping(username, money): pass def check_paidgoods(username, money): pass def check_unpaidgoods(username, money): pass
2、面向对象,必须要站在上帝角度,去考虑问题
类其实就是一个公共模板,对象就从具体的模块实例化出来
面向对象的结构:
'''
class 类名(): # 首字母大写,驼峰体,括号可写可不写
变量部分
函数(方法)
'''
class Human(): ''' 此类主要是定义人类 ''' mind = '有思想' # 静态属性 属性 静态变量 静态字段 language = '会使用语言' def __init__(self,name,sex,age): # 方法, 函数,动态属性 self.n = name self.s = sex self.a = age def work(self): print('人类会工作') def tools(self): self.color = 'blue' print('人类会使用工具') print(Human) # <class '__main__.Human'>
类名:
类名操作类中的静态属性
第一种: 类名.__dict__ 方式,查看类中所有内容
print(Human.__dict__) print(Human.__dict__['mind']) Human.__dict__['mind'] = '无脑' # 修改无效 print(Human.__dict__)
第二种:万能的. 可以增删改查类中的静态属性
print(Human.mind) # 查 Human.mind = '无脑' # 改 print(Human.mind) del Human.mind # 删 Human.walk = '直立行走' print(Human.walk)
类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法)
对象:
什么是对象
只要类名() 这个就是一个实例化过程,就会产生一个对象
obj = Human()
实例化一个对象到底经历了哪些事情?
1、产生一个对象空间。
print(obj) # <__main__.Human object at 0x0000019BC6A0F828>
2、自动执行类中的__init__方法(init函数)并且将这个对象空间传给self
3、在__init__中通过self给这个空间添加属性,并且返回
对象操作对象空间的属性
obj = Human('小胖', '男', 20)
#1、 obj.__dict__ 查询对象中所有的属性
print(obj.__dict__)
#2、 通过万能的. 的方式操作对象中的单个属性
# 增 删 改 查 obj = Human('echo', 'male', 26) obj.job = 'IT' # 增 # print(obj.__dict__) # del obj.job # 删 # print(obj.__dict__) # obj.s = 'woman' # 改 # print(obj.__dict__) print(obj.s) # 查
#3、对象可以查询类中的属性
print(obj.mind) print(obj.language) obj.a = 666 print(obj.a)
4、对象可以执行类中的方法
对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self
obj.work()
self:类中方法的第一个形参约定俗成写self,便于统一,self接受的就是对象空间
多个对象:
xiaopang = Human('小胖', '男', 20) xiangye = Human('相爷', '男', 18) print(xiangye,xiaopang) # <__main__.Human object at 0x00000223FE0E8B38> <__main__.Human object at 0x00000223FE0E8B00> print(xiaopang.__dict__) # {'n': '小胖', 's': '男', 'a': 20} print(xiangye.__dict__) # {'n': '相爷', 's': '男', 'a': 18}