首页 > 编程语言 > 详细

Python学习之面向对象(一)

时间:2019-07-05 16:27:20      阅读:127      评论:0      收藏:0      [点我收藏+]

第六章 面向对象

6.1 面向对象的初识

6.1.1 什么是面向对象

面向过程式编程:

? 好处:出色的完成所有的需求

? 坏处:凡是更改或者增加一条需求,可能整个项目都随之改变

面向对象式编程:

类:具有相似功能和特性的一类事物

对象:类的具体体现

类的优点:

? 类是相似功能特征的集合,可以让代码更清晰,更合理化

? 类是一个公共的模板,对象是从这个模板产出的实体

6.1.2 类

结构
class 类名:  #类名要具有意义,一般使用驼峰体命名
    #类的描述
    类的变量
    类的函数

其中:

类的变量,公认叫做属性(静态属性,静态字段)

类的方法,公认叫做方法(动态方法,动态属性)

例子:

class Student():
    """  构建学生类  """
    daily = '学习'
    role = '学习技能'
    def work(self):
        print('每天都要上课')
    def study(self):
        print('公共课和专业课')
类的属性:

1.查看类的所有内容,使用:类名.__dict__获取类的全部信息

print(Student.__dict__)

输出内容中类的内置属一些内置属性的含义

  • __dict__ 包含该类的命名空间的字典。
  • __doc__ 类的文档描述,可以不定义。
  • __name__ 类名,一般使用驼峰体进行命名
  • __module__ 定义类的模块名称,值是__main__

2.使用 . 对静态的属性操作

print(Student.daily)      #查   
Student.daily = '写代码'   #改
del Student.role          #删
print(Student.__dict__)

3.类名的角度调用类中的方法,一般类中的方法(除去类的方法,静态属性外)不通过类名调用

Student.work(2)  #对于动态的方法,一般不采用这种方式调用

6.1.3 对象

实例化过程:

对象名 = 类名() 实例化一个对象

class Student:
    '''定义学生类'''
    daily = '学习'
    role = '学习技能'
    def __init__(self):
        print(self)
        print('666')
    def work(self):
        print('每天都要上课')
    def study(self):
        print('公共课和专业课')

st1 = Student()  #比较st1的地址与self的地址
print(st1)
st2 = Student()
print(st2)

实体化对象时发生的三件事:

  • 在内存中创建一个对象名命名的空间
  • 自动执行__init__方法,并且将对象空间传给self参数
  • 执行__init__方法里面的代码,给对象空间封装属性
对象的属性

通过 对象名.属性名 对__init__进行增删改查,就是对对象的属性进行操作

class Student:
    '''定义学生类'''
    daily = '学习'
    mission = '学习技能'
    def __init__(self):
        self.name = '盖伦'
        self.team = '德玛西亚'
    def work(self):
        print('每天都要上课')
    def study(self):
        print('公共课和专业课')

st = Student()
print(st.name)
st.role = '战士'
print(st.__dict__)  #查看 st 的属性
del st.role
print(st.__dict__)
对象查看类的属性

? 对象只能查看类里的公共属性,无法更改类的属性,这里需要注意的是即使使用 对象名.类里的属性名 进行的操作只是在对象的空间__init__里添加了与类同名的属性,其实二者存在于不同的内存空间中。

6.1.4 动态实体化对象

可以在任何位置给对象封装属性,在对象实体化时给在类的相应位置设置实参即可,还可以在类的方法内也可对对象的属性进行操作。

class Student:
    '''定义学生类'''
        
    daily = '学习'
    mission = '抵御外敌'
        
    def __init__(self,na,te):
        self.name = na
        self.team = te
    
    def work(self,eq):
        self.equip = eq   
        print(f"{self.name}需要装备{eq},为了{self.mission}")  #仔细研究这里属性的调用,非常有意思
        
    def study(self):
        print('公共课和专业课')

st = Student('盖伦','召唤师峡谷')
print(st.__dict__)
st.work('日炎铠甲')
print(st.__dict__)

6.1.5 self

? self就是类中的方法的第一个位置参数,如果通过对象执行类中的方法,解释器就自动的将此对象空间当做实参传给self,其实self最大的作用就是引用当前方法的调用者。

? 浅显的理解就是,在对象内部进行的相互引用或是赋值等操作,就用self,也就是self作为自己的内部相互操作加个名字,不然怎么使用 . 呢。

class Student:
    '''定义学生类'''
    daily = '学习'
    mission = '抵御外敌'
    def __init__(self):
        self.name = '盖伦'

    def work(self):  #定义一个work方法
        print('现在执行的是work方法')

    def study(self):  #定义一个study方法,需要借用work的方法
        self.work()   #使用self参数引用调用work()方法的对象
        print('现在运行的是study方法')

s = Student()
s.study()

Python学习之面向对象(一)

原文:https://www.cnblogs.com/jjzz1234/p/11138746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!