Python3:OOP Demo
方便快速回顾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的更多相关文章
- python3小demo
总结常用的功能小实例,快速学习并掌握python技能 1.墨迹天气 import requests from lxml.html import etree import json import tim ...
- Python3 与 C# 并发编程之~ 协程篇
3.协程篇¶ 去年微信公众号就陆陆续续发布了,我一直以为博客也汇总同步了,这几天有朋友说一直没找到,遂发现,的确是漏了,所以补上一篇 在线预览:https://github.lesschina.c ...
- Python3基础 __getattr__ 访问不存在的属性时,新增提示功能
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 __delattr__ 在一个属性被删除时的行为
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 __add__,__sub__ 两个类的实例相互加减
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 setattr 设置对象的属性值,如果属性不存在就创建
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 super 子类调用父类的__init__
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 父,子类普通方法重名 子类方法覆盖父类方法
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 isinstance 判断是否为指定类的实例对象
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
随机推荐
- SQL FORMAT() 函数
FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化. SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_nam ...
- chrome浏览器插件开发实例
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 具体步骤: 1.新建 manifest.json 文件 { "name& ...
- redis分页摘抄
Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注) 分页 要对列表页进行分页,需要知道: ①用户总数 $count ② 页大小 $pageSize:用户自定义 ③ 当前页 ...
- linux文件系統详解
什么是文件系统 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在存储设备(磁盘)上组织文件的方法.操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统. 从系统角 ...
- 导出pdf功能
本程序下载地址: PDF是我们极其常用的文件格式,但对如何生成PDF,个人一直觉得很神秘,其实利用一些公开的PDF库,我们就可以直接生成PDF文件,而不用关注PDF文件的内部细节.我知道的PDF库有如 ...
- iOS开发基础篇-transform属性
一. transform 属性 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 1)创建“基于控件初始位置”的形变 CGAffineTransformMakeRot ...
- FineUIPro v5.1.0 发布了!
FineUIPro v5.1.0 已发布,这已经是自 2014 年以来的第 31 个版本,4 年来精雕细琢,只为你来! 上个大版本新增了响应式布局,而这个版本主要是BUG修正,此外还增加了树控件的级联 ...
- 几种c++字符串split 函数实现的比较
文中的字符串split函数功能是 从字符串中按照特定的分隔符进行分割,分割的结果保存到std::vector中. 1. strtok实现 std::vector<std::string> ...
- Kubernetes — 控制器
Pod 这个看似复杂的 API 对象,实际上就是对容器的进一步抽象和封装而已. 说得更形象些,“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说, 还是太过简单了. 这就好比,集装 ...
- ThreadLocal的一些总结
ThreadLocal.class /** * Sets the current thread's copy of this thread-local variable * to the specif ...