首页 > 编程语言 >详解Python类中的三种函数

详解Python类中的三种函数

时间:2023-02-23 09:22:16浏览次数:32  
标签:name level Python self sex stu 详解 print 类中

通俗点来说,Python定义的类中常用的有三种函数,也就是实例方法、类方法和静态方法。使用场景不同决定着不同的结果导向。今天正好有空教大家如何区分并且使用他们,以达到我们项目效果。

实例方法

首先我们定义一个Student类,包含学生姓名,性别最基础的信息。

class Student:

    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def get_info(self):
        return '{} {}'.format(self.name, self.sex)


stu_1 = Student('luopan', 'male')
stu_2 = Student('lucky', 'female')
print(stu_1.get_info())
print(stu_2.get_info())

这里的get_info函数就是实例方法,实例方法第一个参数必须是self,是最常用的方法。

类方法

假设我们现在的学生都是一年级,那我就定义一个变量level,默认值为1。随着时间,这些学生都会进入下一年级,如果我们定义一个实例变量的话,是没法实现每个学生的level都发生变化这个功能的,除非每个学生实例都调用这个函数。

class Student:

    level = 1

    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def get_info(self):
        return '{} {}'.format(self.name, self.sex)

    def set_level(self, level):
        self.level = level



stu_1 = Student('luopan', 'male')
stu_2 = Student('lucky', 'female')
print(stu_1.level)
print(stu_2.level)
stu_1.set_level(5)
print(stu_1.level)
print(stu_2.level)

1
1
5
1

这里我们就需要用到类方法,类方法第一行要有装饰器 @classmethod ;函数第一个参数必须是关键词 clf 。

class Student:

    level = 1

    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def get_info(self):
        return '{} {}'.format(self.name, self.sex)

    @classmethod
    def set_level(cls, level):
        cls.level = level


stu_1 = Student('luopan', 'male')
stu_2 = Student('lucky', 'female')
print(stu_1.level)
print(stu_2.level)
Student.set_level(3)
print(stu_1.level)
print(stu_2.level)
stu_1.set_level(5)
print(stu_1.level)
print(stu_2.level)

1
3
3
5
5

这里可以看到无论是类还是对象调用类方法,结果都是一样的。

静态方法

静态方法第一行要有装饰器 @staticmethod ,函数参数绝对不能有关键词 clf 和 self。例如我们实现输入什么就打印什么的功能(现实中可能并不需要,只是为了方便解释),他是独立的,所以我们就要考虑用静态方法。

import datetime

class Student:

    level = 1

    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def get_info(self):
        return '{} {}'.format(self.name, self.sex)

    @classmethod
    def set_level(cls, level):
        cls.level = level

    @staticmethod
    def test(course):
        print('test {}'.format(course))


stu_1 = Student('luopan', 'male')
stu_1.test('语文')

test 语文

总结

实例方法是最常用的方法。

类方法无论是类还是对象调用类方法,结果都是一样的。常用来

静态方法不随对象和类的属性而改变,常用来做一些简单独立的任务,既方便测试,也能优化代码结构。

今天的分享就到这了,我们下期再见~

标签:name,level,Python,self,sex,stu,详解,print,类中
From: https://www.cnblogs.com/q-q56731526/p/17146719.html

相关文章

  • 如何在Python中自动化处理word表格?
    最近遇到一个问题,就是一个文档里面有很多重复操作的一些数字需要整理为excel表格,主要是方便我们后期操作使用。首先是我对这些数据做了脱敏处理,但这些坐标也都是真是存在的......
  • python 把mysql数据导入到execl中
    importpymysqlimportpandasaspddb=pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,database='world',......
  • Python 处理数据集中的空值
    在Python中,可以使用多种方法处理数据中的空值,以下是一些常见的处理方法:1、删除空值:可以使用pandas库中的dropna方法删除数据中的空值,例如:importpandasaspddf=pd.re......
  • python 解析文件【案例3】
    使用python进行二进制数据处理的方法。方法一:使用struct模块,特点轻量化,简单易用。缺点就是可读性不是太好,使用小数据临时使用一下,对于大量的数据解析,写起来比较繁琐,显得有......
  • Python_Selenium报错:AttributeError: 'WebDriver' object has no attribute 'find_ele
    写法:self.driver.find_element_by_name("wd"),会报错_AttributeError:'WebDriver'objecthasnoattribute'find_element_by_name'  查了下资料原因:`find_element......
  • python 日志解析【案例2】
     要做的事:  1:获取日志内标红的数据(ipython模式正则捕获如下图)         2:转换相关选项的md5和反编码值  3:根据dm值和上个小时的年月日(......
  • Python 解析log日志【案例1】
    sudoaptinstallpython3.8#安装python3python3.8-mpipinstallpython-dateutil#安装dateutil包[2021-09-0311:03:11]**************************E......
  • 自学python-安装python/pycharm-day03
    安装解释器/学习工具pycharm1.Python简介诞生python的创始人为吉多·范罗苏姆(GuidovanRossum),一般称龟叔。1989年的圣诞节期间,龟叔为了在阿姆斯特丹打发时间,决心......
  • 自学python-计算机基础原理-day02
    python学习第一课什么是python?python是一门编程语言什么是编程语言呢就是人与电脑交互的语言我们用python编写自己想要得软件而python把我们写的语言转化成计算机看......
  • python+playwright 学习-9.页面对象模型Page Object Models
    前言POM(PageObjectModels)页面对象模型已经成了写web自动化的一个标准模型。页面对象模型PageObjectModels页面对象代表Web应用程序的一部分。电子商务Web......