新闻动态

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

发布日期:2021-12-26 02:52 | 文章来源:CSDN

本文主要讲述了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方法的资料请关注本站其它相关文章!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部