类的概念:一组相关数据,和操作这组数据的方法存到一起。

  • 属性(类变量、实例变量)
  • 方法(实例方法、类方法、静态方法)

 

 

那么这些属性和方法是怎么去访问的呢?下面进行总结,方便对比和记忆:

 1 class Person:
 2     count = 0 #类变量
 3     nation = "中国"
 4 
 5     def __init__(self,name,gender):
 6         self.name = name
 7         self.gender = gender
 8         Person.count +=1
 9 
10     def get_name(self):#实例方法,必须要实例化
11         return self.name
12     #类方法:可以使用类变量,不能使用实例变量
13     #通过类名来使用,类名.get_instance_count()
14     #也可以通过实例调用,实例对象.get_instance_count()
15     @classmethod
16     def get_instance_count(cls):
17         return Person.count
18 
19     @classmethod
20     def create_a_instance(cls):
21         return Person("","")
22 
23     @staticmethod   #静态方法:不需要self和cls
24     def get_nation():
25         return Person.nation
26 
27 
28 wulaoshi = Person("吴老师","Male") #实例化
29 
30 
31 #访问类变量的两种方式:
32 '''
33 ①类名.类变量
34 ②实例名.类变量
35 '''
36 print("类变量的调用方法:")
37 print(Person.count)
38 print(wulaoshi.count)
39 
40 #访问实例变量的方法:
41 '''
42 ①实例名.实例变量
43 ②实例化.实例变量
44 '''
45 print("实例变量的调用方法:")
46 print(wulaoshi.name)
47 print(Person("吴老师","Male").name)
48 
49 #访问实例方法的三种方式:
50 '''
51 ①实例名.实例方法()
52 ②实例化.实例方法()
53 ③类名.实例方法(实例名)
54 '''
55 print("实例方法的调用方法:")
56 print(Person("吴老师","Male").get_name())
57 print(wulaoshi.get_name())
58 print(Person.get_name(wulaoshi))
59 #注意:实例方法是不能用类名来直接调用的
60 
61 #访问类方法的两种方式:
62 '''
63 ①类名.类方法()
64 ②实例对象.类方法()
65 ③实例.类方法()
66 '''
67 print("类方法的调用方法:")
68 print(Person.get_instance_count())
69 print(Person("吴老师","Male").get_instance_count())
70 print(wulaoshi.get_instance_count())
71 
72 #访问静态方法的两种方式:
73 '''
74 ①类名.静态方法()
75 ②实例对象.静态方法()
76 ③实例。静态方法()
77 '''
78 print("静态方法的调用方法:")
79 print(Person.get_nation())
80 print(Person("吴老师","Male").get_nation())
81 print(wulaoshi.get_nation())
82 
83 
84 print(Person.get_name()) #类名直接调用实例方法,会报错

E:\>py -3 a.py
类变量的调用方法:
1
1
实例变量的调用方法:
吴老师
吴老师
实例方法的调用方法:
吴老师
吴老师
吴老师
类方法的调用方法:
3
4
4
静态方法的调用方法:
中国
中国
中国
Traceback (most recent call last):
File "a.py", line 84, in <module>
print(Person.get_name())
TypeError: get_name() missing 1 required positional argument: 'self'

posted on 2019-10-22 14:41  腿短毛不多  阅读(402)  评论(0编辑  收藏  举报