staticmethod的意义(static 的作用)

http://www.itjxue.com  2023-02-23 02:38  来源:未知  点击次数: 

staticmethod和classmethod的区别

静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用。没有隐性参数。

类方法通过隐性参数绑定在类上,函数内可通过隐性参数进行实例生成。

实例方法通过隐性参数绑定在类上,函数内通过隐性参数访问实例属性。

用个例子来解释一下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#

class Date(object):

def __init__(self, day=0, month=0, year=0):

self.day = day

self.month = month

self.year = year

def __str__(self):

return "{0}-{1}-{2}".format(self.year, self.month, self.day)

@classmethod

def from_string(a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBPhckryNBuynkPAP-nhfL0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYn1b1rj0dPj6vrj6dPHmd" target="_blank" class="baidu-highlight"cls/a, date_as_string):

year, month, day = map(int, date_as_string.split('-'))

date1 = a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBPhckryNBuynkPAP-nhfL0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYn1b1rj0dPj6vrj6dPHmd" target="_blank" class="baidu-highlight"cls/a(day, month, year)

return date1

@staticmethod

def is_date_valid(date_as_string):

year, month, day = map(int, date_as_string.split('-'))

return day = 31 and month = 12 and year = 3999

@staticmethod

def millenium(month, day):

return Date(month, day, 2000)

class DateTime(Date):

def __str__(self):

return "{0}-{1}-{2} - 00:00:00PM".format(self.year, self.month, self.day)

if __name__=="__main__":

s='2012-09-11'

if Date.is_date_valid(s):

date1 = Date.from_string('2012-09-11')

print date1

date2 = DateTime.from_string('2012-09-11')

print date2

millenium_new_year1 = Date.millenium(1, 1)

print millenium_new_year1

millenium_new_year2 = DateTime.millenium(10, 10)

print millenium_new_year2

委托类型的问题

1. 委托名

2.方法名

3.方法名

4.void 后面只能根方法名

5.定义一个委托,myClass.staticMethod是与委托类型,同签名的静态方法

java中static关键字的意义

上述代码块运行的结果为:

上述代码块运行的结果为:

1. static关键字 : 静态的意思。可以修饰成员变量和成员方法。

2. static关键字的特点

A : 随着类的加载而加载

B : 优先于对象存在

C : 被类的所有对象共享

这其实也是我们判断该不该使用静态的依据。

同一个班级的学生应该共用同一个班级编号。

饮水机 (用静态修饰)

水杯 (不能用静态修饰)

D : 可以通过类名调用

既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。

3. static关键字的注意事项

A : 在静态方法中没有this关键字,如何理解呢 ?

静态是随着类的加载而加载,this是随着对象的创建而存在。

静态比对象先存在。

B : 静态只能访问静态。

静态方法只能访问静态的成员变量。

静态方法只能访问静态的成员方法。

非静态方法可以访问静态和非晶态的成员变量。

非静态方法可以访问静态和非晶态的成员方法。

4. 静态变量和成员变量的区别

A : 所属不同

静态变量:属于类,类变量

成员变量:属于对象,对象变量,实例变量

B : 内存位置不同

静态变量:方法区的静态区

成员变量:堆内存

C : 生命周期不同

静态变量:静态变量是随着类的加载而加载,随着类的消失而消失

成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失

D : 调用不同

静态变量:可以通过对象名调用,也可以通过类名调用

成员变量:只能通过对象名调用

(责任编辑:IT教学网)

更多

推荐数据库文章