python编程普通及类和静态方法示例详解

 更新时间:2021年10月12日 12:00  点击:2297

前言

本文主要讲述了python类中的三类常用方法,普通方法、类方法和静态方法。 
本文主要参考了https://youtu.be/rq8cL2XMM5M,强烈推荐一看这个系列的所有视频。

运行环境

import sys
sys.version

结果为

'3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]'

普通方法

我们这里定义一个叫做学生的类,并在其中定义了一个普通方法total_score()用于获取某个实例的学生的总分。

class Student(object):
    num_of_stu = 0 #学生人数
    def __init__(self, name, age, math, Chinese):
        self.name = name #学生姓名
        self.age = age #学生年龄
        self.math = math #数学成绩
        self.Chinese = Chinese #语文成绩
        Student.num_of_stu += 1 #每实例化一个学生,人数加1,相当于静态变量
    def __del__(self):
        Student.num_of_stu -= 1 #每删除一个实例,人数减1
    #普通方法,用于计算学生的总分
    def total_score(self):
        return self.math + self.Chinese

然后我们生成几个实例试一下看

print (Student.num_of_stu)
stu1 = Student('Bob', 11, 51, 33)
print (stu1.total_score())
stu2 = Student('Peco', 12, 98, 79)
print (stu2.total_score())
print (Student.num_of_stu)
del stu1
print (Student.num_of_stu)

结果为

0
84
177
2
1

类方法

现在假设我们想用一个字符串来实现实现一个实例的实例化,那么我们可以加上一个类方法from_string

class Student(object):
    num_of_stu = 0 #学生人数
    def __init__(self, name, age, math, Chinese):
        self.name = name #学生姓名
        self.age = age #学生年龄
        self.math = math #数学成绩
        self.Chinese = Chinese #语文成绩
        Student.num_of_stu += 1 #每实例化一个学生,人数加1,相当于静态变量
    def __del__(self):
        Student.num_of_stu -= 1 #每删除一个实例,人数减1
    #普通方法,用于计算学生的总分
    def total_score(self):
        return self.math + self.Chinese
    #类方法,用于用字符串生成实例
    @classmethod
    def from_string(cls, stu_str):
        name, age, math, Chinese = stu_str.split('-')
        return cls(name, int(age), float(math), float(Chinese))

我们来试一下看

stu_str = "Bob-12-50-34"
stu1 = Student.from_string(stu_str)
print (stu1.name, stu1.total_score())

结果是

Bob 84.0

静态方法

现在又假设我们需要类中有一个方法可以帮我们看看是不是上课日,那么我们就需要静态方法了

class Student(object):
    num_of_stu = 0 #学生人数
    def __init__(self, name, age, math, Chinese):
        self.name = name #学生姓名
        self.age = age #学生年龄
        self.math = math #数学成绩
        self.Chinese = Chinese #语文成绩
        Student.num_of_stu += 1 #每实例化一个学生,人数加1,相当于静态变量
    def __del__(self):
        Student.num_of_stu -= 1 #每删除一个实例,人数减1
    #普通方法,用于计算学生的总分
    def total_score(self):
        return self.math + self.Chinese
    #类方法,用于用字符串生成实例
    @classmethod
    def from_string(cls, stu_str):
        name, age, math, Chinese = stu_str.split('-')
        return cls(name, int(age), float(math), float(Chinese))
    #静态方法,用于判断要不要上学
    @staticmethod
    def is_school_day(day):
        if day.weekday() == 5 or day.weekday() == 6:
            return False
        return True

我们来试下看

import datetime
my_date1 = datetime.date(2017, 9, 15)
my_date2 = datetime.date(2017, 9, 16)
print (Student.is_school_day(my_date1))
print (Student.is_school_day(my_date2))

结果是

True
False

以上就是python编程普通及类和静态方法示例详解的详细内容,更多关于python方法的资料请关注猪先飞其它相关文章!

[!--infotagslink--]

相关文章

  • python opencv 画外接矩形框的完整代码

    这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 最炫Python烟花代码全解析

    2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
  • python中numpy.empty()函数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
  • python-for x in range的用法(注意要点、细节)

    这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • python实现b站直播自动发送弹幕功能

    这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • python Matplotlib基础--如何添加文本和标注

    这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13