前言
本文主要讲述了python类中的三类常用方法,普通方法、类方法和静态方法。
本文主要参考了https://youtu.be/rq8cL2XMM5M,强烈推荐一看这个系列的所有视频。
运行环境
1
2
|
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()用于获取某个实例的学生的总分。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
|
然后我们生成几个实例试一下看
1
2
3
4
5
6
7
8
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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))
|
我们来试一下看
1
2
3
|
stu_str = "Bob-12-50-34"
stu1 = Student.from_string(stu_str)
print (stu1.name, stu1.total_score())
|
结果是
Bob 84.0
静态方法
现在又假设我们需要类中有一个方法可以帮我们看看是不是上课日,那么我们就需要静态方法了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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
|
我们来试下看
1
2
3
4
5
|
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方法的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/zjuPeco/article/details/78006661