• Python3:OOP Demo


    方便快速回顾Python的OOP语法

     1 ######################
     2 #  类的私有专有方法  #
     3 ######################
     4 # __init__ : 构造函数,在生成对象时调用
     5 # __del__ : 析构函数,释放对象时使用
     6 # __repr__ : 打印,转换
     7 # __setitem__ : 按照索引赋值
     8 # __getitem__: 按照索引获取值
     9 # __len__: 获得长度
    10 # __cmp__: 比较运算
    11 # __call__: 函数调用
    12 # __add__: 加运算
    13 # __sub__: 减运算
    14 # __mul__: 乘运算
    15 # __div__: 除运算
    16 # __mod__: 求余运算
    17 # __pow__: 乘方
    18 
    19 class BaseClass:                         
    20     """a Base Class"""
    21     baseName = "BaseName";
    22     def __init__(self,baseName):
    23         self.baseName = baseName;
    24         pass;
    25     def myBaseName(self):
    26         return "[BaseClass.myBaseName]" + self.baseName;
    27         pass;
    28     def myMethod(self):
    29         return '[BaseClass.myMethod] 调用父类方法';
    30         pass;
    31     pass;
    32 
    33 class ClassName(BaseClass):                # 继承 
    34                                            #     多继承:class SubClass(Base1, Base2, Base3):
    35     """a simple sample of class"""
    36     i = 12345                              # 公有属性:public
    37     name = ''
    38     money = 0
    39     __weight = 0                           # 私有属性:private,两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问
    40     def __init__(self,name,money,msg=None):# 构造方法:private,在类实例化时会自动调用
    41         self.data = [0,1];
    42         if type(name).__name__ != 'list':
    43             BaseClass.__init__(self,name); #【调用基类构造方法】
    44             self.name = name;
    45         self.msg = msg;
    46         self.money = money;
    47         self.__weight = 10;
    48         self.__whisper();                  #【调用私有方法】
    49         pass;
    50     def fun(self):                         # 公有方法:public
    51         print(self.__class__);             #      类的方法与普通的函数的唯一区别——必须一额外的首参数, 按照惯例它的名称为self
    52                                            #      self:约定俗成的命名,非固定命名;代表类的实例,而非类本身
    53         print(self);
    54         print("[ClassName.fun] 我叫:%s" %(self.name));
    55         return "[ClassName.fun] Hello World";
    56         pass;
    57     def __whisper(self):                   # 私有方法:private,外部调用将报错
    58         print("[ClassName.__whisper__] 内部悄悄话,外人看不见~");
    59         pass;
    60     def myMethod(self):                    # 重写:重写父类方法
    61         return '[ClassName.myMethod] 调用子类方法';
    62     def __add__(self,other):               # 重写私有专有方法
    63         return ClassName(self.name, self.money + other.money, self.msg + other.msg);
    64         pass;
    65     pass;
    66 
    67 # use demo
    68 
    69 obj = ClassName("Johnny",100,"Hi,girl!");    # 实例化对象,且必须满足__init__()方法要求的参数,否则报错
    70 print(obj.i);                        
    71 print(obj.data);
    72 print(obj.name);
    73 print(obj.msg);
    74 print(obj.fun());
    75 
    76 obj2 = ClassName("Johnny",200,"Hi,girl!");
    77 print(obj.money);
    78 print(obj2.money);
    79 print((obj +obj2).money);
    80 
    81 print(obj.myBaseName()); # 【调用父类方法】
    82 print(obj.myMethod());   # 【调用子类(重写)方法】
    83 print(super(ClassName, obj).myMethod());   # 【调用父类(被重写/覆盖的)方法】

    输出:

    [ClassName.__whisper__] 内部悄悄话,外人看不见~
    12345
    [0, 1]
    Johnny
    Hi,girl!
    <class '__main__.ClassName'>
    <__main__.ClassName object at 0x000002D2C576EB38>
    [ClassName.fun] 我叫:Johnny
    [ClassName.fun] Hello World
    [ClassName.__whisper__] 内部悄悄话,外人看不见~
    100
    200
    [ClassName.__whisper__] 内部悄悄话,外人看不见~
    300
    [BaseClass.myBaseName]Johnny
    [ClassName.myMethod] 调用子类方法
    [BaseClass.myMethod] 调用父类方法

    参考文献

      null

  • 相关阅读:
    Top 100 Works in World Literature by Norwegian Book Clubs, with the Norwegian Nobel Institute
    Why Should I Study a Foreign Language?
    剑指offer刷题
    文远知行——C++后端研发岗一、二、三面 —— 面校招给实习offer
    小红书 —— 直播后端 笔试、一、二、三面 —— 三面挂
    .Net Core跨平台CentOs ,DateTime 中文 上午 下午或英文AM,PM造成SQL错误的问题
    mysqlbinlog文件转sql文件
    springboot引入三方jar包打包报错问题解决
    HPUX上glance命令的使用
    关于Linq查询条件可能为null时的诡异事件
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/9746386.html
Copyright © 2020-2023  润新知