慕课网python学习笔记7

类的定义
类格式示例:

class Student():
    name = ''
    age = 0

    def print_file(self):
        print('name:' + self.name)
        print('age:' + str(self.age))

注:类中的函数,参数列表中必须有self,并且如果想在函数中引用类中变量需要使用self. 操作符。
类实例化示例:
student = Student()
在这里插入图片描述
浅谈函数与方法的区别
建议在一个模块里写类,在另外一个模块里将类实例化并且调用里面的函数:
在这里插入图片描述
方法和函数的区别:
没有绝对的区别(c\c++里面更多的称为函数,java\c#里面更多的称为方法)
方法是设计层面的称谓,是面向对象的;函数是程序运行、过程式的称谓
类下面的称为方法,因为类是面向对象的;如果只是定义在模块里的,还是称为函数
定义在模块里的,称为变量;出现在类内的,称谓数据成员
类与对象
1)两者是通过实例化关联在一起。如:student = Student()
2)类的理解:它将数据以及这些数据上的操作封装在一起
3)在类中:数据成员(即变量)刻画类的特征;方法(即函数)描述类的行为。就像描述student除了name和age,还有其相应的行为,比如做作业和考试
4)类设计得好不好,就在于能否抓住类的行为和特征,所以把print_file( )这个函数放在student类下是不合适的,所以最好再设置一个类printer
对象:
1)对象表示一个具体的概念。类是一个共同的群体名,而对象是类的具体实例
2)向类传递具体的参数,可以产生不同对象
构造函数
①实例化过程自动调用构造函数,可以在构造函数里初始化对象的特征
构造函数可以让类生成不同的对象,实例化传入不同的参数
python中构造函数的格式:

def __init__(self,name,age):
    name=name
    age=age

python是知道等号左边的name和等号右边的name是什么意思的,所以不用纠结是否给等号右边的值(形参)起一个新的名字例如name1等
注:python中的构造函数可以显示调用,但很少这样做。如:
student1 = Student(‘石敢当’,18) #构造函数在实例化的时候自动调用
student1.init()
此时用这种显示方式调用构造函数与调用普通函数无异,并且这样调用也只返回None.(跟前面讲的一样,不写return编译器自动认为return None)
在这里插入图片描述
在这里插入图片描述
区别模块变量与类中变量
模块中局部变量和全局变量的机制与类完全不同
模块变量的机制:局部变量不会覆盖全局变量,局部变量的作用域仅在函数内

c=50
def add(x,y):
    c=x+y
    print c
add(1,2)
print c

返回值为3
50
而类的机制与“类变量”和“实例变量”相关(下节开始说)
注意:不要把模块和类看起来相似的地方等同起来!
类变量与实例变量
类变量就是和类相关联的变量;
实例变量是和对象相关联的变量,在构造函数里通过self.变量名 来保存实例变量

class Student():
    #此处定义的是类变量
    sum = 0
    def __init__(self, name, age):
        #此处定义的是实例变量
        self.name = name
        self.age = age

这样在创建一个对象的时候,在括号里输入参数值,就不会得到编译器返回为空的结果了
在这里插入图片描述
在这里插入图片描述
类与对象的变量查找顺序
1、对象中内置__dict__:以字典的方式返回对象中所有变量。调用方式:对象名.dict
注:也可以访问类的__dict__,返回当前类的所有相关变量(类变量)。调用方式:类名.dict
2、变量寻找机制:python会先在实例变量中查找 若实例变量中没有找到(__dict__中没有该变量)
python不会返回 会再去类中查找 类中找不到 会再到父类中查找
注意的坑:
机制的描述:在实例方法中如果要寻找某个变量,会先到实例中的__dict__中寻找。
在这里说会到实例中的__dict__中寻找,但是这种变量寻找机制的前提条件是,你的变量名得是self.变量名。不然会报错
self与实例方法
实例方法(与对象和实例相关联的方法,也是实例可以调用的方法)
1、实例方法在定义是参数里必须写上self
2、实例方法调用时,不用给self传参,系统自动传了
3、实例方法定义时的self也可以换成this,或者其他任意,但是python建议写self(显胜于隐)
4、self代表是实例而不是类(代表当前调用某个方法的对象,只与对象有关)
5、self可以换为别的this之类的,所以不能称之为关键字
在实例方法中访问实例变量与类变量
实例方法访问实例变量必须用到self,比如:self.变量

class Student():
    sum=0
    name='cde'
    age=0

    def __init__(self,name,age):
        self.name=name
        print(self.name)            #打印的是实例变量ab
        print(name)                 #打印的是形参传递的变量ab,这种方式不推荐,因为如果形参换成name1,然后将函数下第一行代码等号右边换成name1,接下来执行第三行代码会报错
        print(Student.name)    #打印的是在实例方法中访问的类变量cde
        print(self.__class__.name)  #同上

类方法
定义类方法的格式:

@classmethod
def plus_sum(cls):
      pass

@classmethod是装饰器,是类方法的特征。类方法只与类相关,与对象关系不大。

@classmethod
    def plus_sum(cls):
        cls.sum += 1
        print(cls.sum)

调用类方法:
直接用类来调用:
Student.plus_sum()
用对象来调用类的方法:
student1.plus_sum()
建议还是用类来调用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值