面向对象【day07】:知识点回顾(十二)

本节内容

1、self关键字

2、封装

3、继承

4、静态方法

一、self关键字

作用:调用当前方法的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class  Foo:
     
     #静态字段或者公有属性
     country  =  "中国"
 
     def  __init__( self ,name,count):
         self .name  =  name
         self .count  =  count
 
     def  bar( self ):
         pass
 
obj1  =  Foo( "江苏" 100000 )
obj1.bar

注意:country = "中国" 属于公有字段,它的作用是:每个对象中保存相同的东西时,可以使用静态字段

 

二、封装

  • 类中封装了 :字段、方法
  • 对象中封装了:普通字段的值
  • 不仅可以封装字段,还可以封装对象
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
class  F1:
     def  __init__( self ,n):
         self .N  =  n
         print ( "F1" )
     
class  F2:
     def  __init__( self ,arg1):
         self .a  =  arg1
         print ( "F2" )
 
class  F3:
     
    def  __init__( self ,arg2):
         self .b  =  arg2
         print ( "F3" )
 
o1  =  F1( "alex" )
o2  =  F2(o1)
o3  = F3(o2)
 
######输出alex####
# o3 =F3(o2)
o3  = = = = > o2
 
# o2 = F2(o1)
o3.b.a
 
# o1 = F1("alex")
o1.b.a.N

三、继承

说明:子类继承父类,对象调用方法时,先从自己的类中去找,找不到,就会去找父类中的方法。

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
class  F1:
     def  __init__( self ):
         print ( 'F1' )
 
     def  a1( self ):
         print ( "F1a1" )
 
     def  a2( self ):
         print ( "F1a2" )
 
class  F2(F1):
     def  __init__( self ):
         print ( "F1" )
 
     def  a1( self ):
         print ( "F2a1" )
 
     def  a2( self ):
         self .a2()
         print ( "F2a2" )
 
class  F3(F2):
     def  __init__( self ):
         print ( "F3" )
 
     def  a2( self ):
         print ( "F3a2" )
 
obj  =  F3()
obj.a1()
 
#输出
F3a2
F2a1

上面代码访问的顺序如下:

  1.  先去到F3中找a1方法,没有找到
  2. 到F2父类去找,找到了a1方法,去执行a1方法
  3. 执行过程中需要调用F3中的a2方法

四、静态方法

4.1 类的组成

  • 字段:1.普通字段(保存在对象中),2静态字段(保存在类中)
  • 方法:普通方法(保存在类中,用对象去调用)
1
2
3
4
5
6
7
class  F1:
     age  =  18   #静态字段
     def  __init__( self ,name):
         self .name  =  name   #普通字段
 
     def  a1( self ):    #普通方法
         print ( 'F1a1' )

4.2 静态方法

特点:

  1. 保存在类中
  2. 调用者无需创建对象
  3. 可以有任意个参数
1
2
3
4
5
6
7
8
class  F1:
     
     @staticmethod    #声明是静态方法
     def  a1(n1,n2):    #无需传入对象,但是可以声明多个值
         print ( 'xiaogao' )
 
 
F1.a1( 1 , 2 )    #类名.方法名 方式调用

作用:当对象不需要传入参数时,去创建对象有些浪费,占着资源,所以还不如直接用类名直接去调用,这个类似于函数。

猜你喜欢

转载自www.cnblogs.com/luoahong/p/9895440.html