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接受的就是对象空间。

  # 多个对象

posted @ 2019-01-14 22:07  addit  Views(76)  Comments(0)    收藏  举报