Day18 面向对象初始
01 上周内容回顾
02 面向对象初识
# 1,第一个优点:面向对象是一类相似功能函数的集合体。 # 更清晰化,更规范化。 # 2,面向对象,必须要站在上帝的角度,去考虑问题,类其实就是一个公共模板,对象就从具体的模板实例化出来。 # 面向对象的结构 ''' class 类名(): 变量 (静态属性) 函数(方法) (动态属性) '''
一:我们定义的类的属性到底存到哪里了?
有两种方式查看 dir(类名):
查出的是一个名字列表 类名.__dict__:
查出的是一个字典,key为属性名,value为属性值
二:特殊的类属性
类名.__name__# 类的名字(字符串)
类名.__doc__# 类的文档字符串
类名.__base__# 类的第一个父类(在讲继承时会讲)
类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
类名.__dict__# 类的字典属性
类名.__module__# 类定义所在的模块
类名.__class__# 实例对应的类(仅新式类中)
# 类名
# 类名操作类中的静态属性。 # 第一种,类名.__dict__方式:查看类中所有内容时用。 # 查: obj.__dict__
# 第二种 万能的. 可以增删改查类中的静态属性。 通过obj.name 这种方式
# print(Human.mind) # 查 # Human.mind = '无脑' # 改 # print(Human.mind) # del Human.mind # 删 # Human.walk = '直立行走'
# 类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法) # 类名.方法名(参数) # Human.tools(111) # 下面可以做,但不用。 # Human.__dict__['work'](111)
# 对象
# 什么是对象?
#只要类名() 这个就是一个实例化过程,就会产生一个对象。
# obj = Human()
# 实例化一个对象到底经历的那些事情?
# 1,产生一个空的对象的空间。 # print(obj) # <__main__.Human object at 0x0000019BC6A0F828> # 2,自动执行类中的 __init__方法并且将这个空的对象空间传给self。 # print(obj) # 3,在__init__中通过self给这个空间添加属性。 # obj = Human('小胖','男',20,'女') # print(obj.__dict__) # 对象操作对象空间的属性 # obj = Human('小胖','男',20,'女') #1,obj.__dict__ 查询对象中所有的属性 #2, 通过万能的.的方式操作对象中的单个属性。 # obj.job = 'IT' # 增 # del obj.n # 删 # obj.s = '女' # 改 # print(obj.__dict__) # 3,对象可以查询类中的属性。 # print(obj.mind) # print(obj.language) # obj.a = 666 # print(obj.a) # 4,对象可以执行类中的方法。 # 对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self # print(obj) # obj.work()
# self:类中方法的第一个形参约定俗成写self 便于统一,self接受的就是对象空间。
# 多个对象

浙公网安备 33010602011771号