• perl 一个简单的面向对象的例子


    <pre name="code" class="python">[root@wx03 wx]# cat x1.pm
    package x1;  
    use Data::Dumper;  
    sub new {  
    my $self ={}; ##引用
    my $invocant = shift;  
    my $class = ref($invocant) || $invocant;  
    print "$class is $class
    ";  
    
    
    bless($self, $class); # 给予对象性质   告诉 方法属于哪个对象,$class==x1, bless 引用 特定的包  ,
    ### bless 引用 特定的包 来实现面向对象
    print "11111111111111
    ";
    print $self;
    print "
    ";
    use Data::Dumper;
     my $var= Dumper($self);
    print "$var is $var
    ";
    
    print "111111111111111
    ";
    return $self;  
    };  
    
    
    sub sum_var { 
      my ($self,              ##第一个参数为对象:
          $var1,              # Name or IP number of host to ping
          $var2,           # Seconds after which ping times out
          ) = @_;
    my $var3= $var1 + $var2;
    return $var3;
     } 
    1;
    
    对象只是一种特殊的引用,它知道自己是和哪个类关联在一起的,而构造器知道如何创建那种关联关系。    
            
    这些构造器是通过使用bless操作符,将一个普通的引用物转换成一个对象实现的,
    
    bless 就是绑定一个数据结构的引用到一个包的名字上。
    
    一个"对象"是指一个“有办法知道它是属于哪个类”的简单引用
    
    
    bless 函数接收一个或者两个参数,第一个参数是一个引用,而第二个是要把引用赐福(bless)成的包。  
      
    如果忽略第2个参数,则使用当前包 
    
    所有对象都是引用,但不是所有引用都是对象。  
      
    一个引用不会作为对象运转,除非引用它的东西又特殊标记告诉Perl它属于哪个包。  
      
     
    把一个引用和一个包名字标记起来(因此也和包中的类标记起来了,因为一个类就是一个包)  
      
    的动作被称作赐福(blessing)  
      
      
    你可以把赐福(bless)看作把一个引用转换成一个对象,尽管更准确地说是它把该引用转换成一个对象引用  
    
      Perl类的方法只不过是一个Perl子程序而已,也即通常所说的成员函数。Perl的方法定义不提供任何特殊语法,
      
      但规定方法的第一个参数为对象或其被引用的包。
      
      Perl提供了bless()函数,用于返回一个引用,并成为一个对象。
    --------------------------------------------------------------------------------------------------
    [root@wx03 wx]# cat x1.pl
    unshift (@INC,"/root/wx"); 
    require x1;
    $ed = x1->new();
    print $ed->sum_var(1,5);
    print "
    ";
    
    
    [root@wx03 wx]# perl x1.pl
    $class is x1
    11111111111111
    x1=HASH(0x23e82f0)
    $var is $VAR1 = bless( {}, 'x1' );
    
    111111111111111
    6


    
    
    
    
    
    
    
    
    
    
    
       
    
    
  • 相关阅读:
    No module named scrapy 成功安装scrapy,却无法import的解决方法
    linux装sqlite3
    linux python3 安装scrapy 后提示 -bash: scrapy: 未找到命令
    使用splash爬去JavaScript动态请求的内容
    python之auto鼠标/键盘事件
    python分割txt文件
    [WPF]使用WindowChrome自定义Window Style
    [UWP]浅谈按钮设计
    [UWP]用Shape做动画(2):使用与扩展PointAnimation
    [UWP]用Shape做动画
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6200290.html
Copyright © 2020-2023  润新知