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 ...
随机推荐
- ASP.NET基础知识汇总之WebConfig各节点介绍
web.config虽然一直用,接触最多的也就是节点appSettings和connectionSettings,今天系统的梳理一下,了解一下webconfig各个节点的含义,先简单的浏览一下具体的w ...
- elementUI el-select 中disabled设置
<el-select v-model="userForm.roleName" placeholder="请选择用户角色" :disabled=" ...
- 磁盘缓存--YYCache 设计思路
为了设计一个比较好的磁盘缓存,我调查了大量的开源库,包括 TMDiskCache.PINDiskCache.SDWebImage.FastImageCache 等,也调查了一些闭源的实现,包括 NSU ...
- ASP+中文显示之两种解决方法
作者刚開始写ASP+程序时候碰到的第一个比較大的问题就是中文显示问题,执行后发现ASP+从数据库中读 取出来的中文所有变成了?????,有点相似jsp中的这个频率出现最高的中文显示问题了,查了资料发 ...
- 001_JavaScript数组常用方法总结及使用案例
一. https://msdn.microsoft.com/zh-cn/library/ff679976(v=vs.94).aspx 二.ip地址转换成对应的二进制. const ip='172.16 ...
- odoo12.0 在Ubutu 18.04下环境的搭建
sudo apt-get update sudo apt- postgresql nano virtualenv gcc python3.-dev libxml2-dev libxslt1-dev l ...
- 基于Grunt构建一个的项目
没有搭建环境的,请参考<Grunt自动化构建环境搭建 >,搭建完成后 新建一个项目目录,这里建立一个“Demo”目录 运行CMD,并进入这个目录,运行 npm install grunt ...
- Scrapy中选择器的用法
官方文档:https://doc.scrapy.org/en/latest/topics/selectors.html Using selectors Constructing selectors R ...
- 利用CocoaHttpServer搭建手机本地服务器
原理 使用CocoaHTTPServer框架,在iOS端建立一个本地服务器,只要电脑和手机连入同一热点或者说网络,就可以实现通过电脑浏览器访问iOS服务器的页面,利用POST实现文件的上传. 实现 1 ...
- pyspider爬虫框架
特点: 去重处理,结果监控,多进程处理,pyquery提取,错误重试,webUI管理,代码简洁,JS渲染 安装: anaconda里边没搜到pyspider,所以手动安装 查看pyspider的命令: ...