方便快速回顾Python的OOP语法

 ######################
# 类的私有专有方法 #
######################
# __init__ : 构造函数,在生成对象时调用
# __del__ : 析构函数,释放对象时使用
# __repr__ : 打印,转换
# __setitem__ : 按照索引赋值
# __getitem__: 按照索引获取值
# __len__: 获得长度
# __cmp__: 比较运算
# __call__: 函数调用
# __add__: 加运算
# __sub__: 减运算
# __mul__: 乘运算
# __div__: 除运算
# __mod__: 求余运算
# __pow__: 乘方 class BaseClass:
"""a Base Class"""
baseName = "BaseName";
def __init__(self,baseName):
self.baseName = baseName;
pass;
def myBaseName(self):
return "[BaseClass.myBaseName]" + self.baseName;
pass;
def myMethod(self):
return '[BaseClass.myMethod] 调用父类方法';
pass;
pass; class ClassName(BaseClass): # 继承
# 多继承:class SubClass(Base1, Base2, Base3):
"""a simple sample of class"""
i = 12345 # 公有属性:public
name = ''
money = 0
__weight = 0 # 私有属性:private,两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问
def __init__(self,name,money,msg=None):# 构造方法:private,在类实例化时会自动调用
self.data = [0,1];
if type(name).__name__ != 'list':
BaseClass.__init__(self,name); #【调用基类构造方法】
self.name = name;
self.msg = msg;
self.money = money;
self.__weight = 10;
self.__whisper(); #【调用私有方法】
pass;
def fun(self): # 公有方法:public
print(self.__class__); # 类的方法与普通的函数的唯一区别——必须一额外的首参数, 按照惯例它的名称为self
# self:约定俗成的命名,非固定命名;代表类的实例,而非类本身
print(self);
print("[ClassName.fun] 我叫:%s" %(self.name));
return "[ClassName.fun] Hello World";
pass;
def __whisper(self): # 私有方法:private,外部调用将报错
print("[ClassName.__whisper__] 内部悄悄话,外人看不见~");
pass;
def myMethod(self): # 重写:重写父类方法
return '[ClassName.myMethod] 调用子类方法';
def __add__(self,other): # 重写私有专有方法
return ClassName(self.name, self.money + other.money, self.msg + other.msg);
pass;
pass; # use demo obj = ClassName("Johnny",100,"Hi,girl!"); # 实例化对象,且必须满足__init__()方法要求的参数,否则报错
print(obj.i);
print(obj.data);
print(obj.name);
print(obj.msg);
print(obj.fun()); obj2 = ClassName("Johnny",200,"Hi,girl!");
print(obj.money);
print(obj2.money);
print((obj +obj2).money); print(obj.myBaseName()); # 【调用父类方法】
print(obj.myMethod()); # 【调用子类(重写)方法】
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

Python3:OOP Demo的更多相关文章

  1. python3小demo

    总结常用的功能小实例,快速学习并掌握python技能 1.墨迹天气 import requests from lxml.html import etree import json import tim ...

  2. Python3 与 C# 并发编程之~ 协程篇

      3.协程篇¶ 去年微信公众号就陆陆续续发布了,我一直以为博客也汇总同步了,这几天有朋友说一直没找到,遂发现,的确是漏了,所以补上一篇 在线预览:https://github.lesschina.c ...

  3. Python3基础 __getattr__ 访问不存在的属性时,新增提示功能

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. Python3基础 __delattr__ 在一个属性被删除时的行为

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  5. Python3基础 __add__,__sub__ 两个类的实例相互加减

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. Python3基础 setattr 设置对象的属性值,如果属性不存在就创建

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. Python3基础 super 子类调用父类的__init__

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. Python3基础 父,子类普通方法重名 子类方法覆盖父类方法

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. Python3基础 isinstance 判断是否为指定类的实例对象

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

随机推荐

  1. R语言学习——矩阵

    > #矩阵是一个二维数组,每个元素都拥有相同的模式(数值型.字符型或者逻辑型).通过matrix()创建,一般使用格式为:mymatrix<-matrix(vector,nrow=numb ...

  2. ubuntu下安装飞鸽传书

    1.从官网下载Linux版本飞鸽传书(http://www.ipmsg.org.cn/) 2.解压后执行 ./QIpmsg 若报错 libstdc++.so.6: version `CXXABI_AR ...

  3. Vue-移动端项目真机测试

    一.查看ip地址 在控制台输入 ifconfig 查看ip地址 二.修改webpack-dev-server配置项 webpack-dev-server 默认不支持ip地址访问,需要修改配置项 三.测 ...

  4. PowerShell-自定义函数(五)-参数互斥:ParameterSetName

    转自:https://blog.51cto.com/38088444/1920978 这一篇我们来讲一下参数的互斥,何谓参数互斥呢.用九胖风格的话说就是互怼,有我没你,有你没我. 例如我们为一个Pin ...

  5. Shell命令-文件及内容处理之grep(egrep)、join

    文件及内容处理 - grep(egrep).join 1. grep(egrep):文本过滤工具 grep(egrep)命令的功能说明 grep命令是Linux系统中最重要的命令之一,其功能是从文本文 ...

  6. 使用lombok自动生成链式调用

    本文转载:使用 Lombok 自动生成 Getter and Setter

  7. Flask插件wtforms、Flask文件上传和Echarts柱状图

    一.wtforms 类比Django的Form组件Form组件的主要应用是帮助我们自动生成HTML代码和做一些表单数据的验证 flask的wtforms用法跟Form组件大同小异参考文章:https: ...

  8. 不用Ajax时的传参方法

    不用Ajax时的怎么传参 创建一个form表单 function test(){ var params = { "参数名": "参数值" }; postExce ...

  9. BZOJ4241历史研究——回滚莫队

    题目描述 IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. 日记中记录了连 ...

  10. Android学习第8天

    进程的概念 a)        四大组件都运行在主线程中 b)        服务是没有界面的,可理解为没有界面的Activity c)         进程的优先级 i.              ...