5_Python OOP
1. 实例属性和类属性
(1) 实例属性在构造函数__init__中定义,定义时以self作为前缀,只能通过实例名访问
(2) 类属性在类中方法之外单独定义,还可以在程序中通过类名增加,建议通过类名直接访问。
class Product: ##建议首字母大写
price = 100 ##类属性
def __init__(self,c):
self.color = c ##实例属性
##主程序
Product1 = Product("red")
Product2 = Product("yellow")
Product.price = 120 ##修改类属性值
Product.name = "shoes" ##增加类属性
Product1.color = "black" ##修改实例属性
(3) 私有属性以__开头,否则是公有属性。私有属性在类外不能直接访问。而是通过特殊方式访问私有属性:
class Food:
def __init__(self):
self.__color = 'red' ##私有属性定义格式
self.price = 0
##主程序
>>>apple = Food()
>>>apple.(_)Food__color = "blue" ##私有属性修改格式
>>>print(apple._Food__color) ##私有属性访问格式
blue
2. 类的方法
class Fruit:
price = 0 ##类属性
def __init__(self):
self.__color = 'red' ##私有属性
def __outputColor(self): ##私有方法
print(self.__color)
def output(self): ##公有方法
self.__outputColor()
@staticmethod ##静态方法
def getprice():
return Fruit.frice
@classmethod ##类方法
def fget(cls):
print(cls)
3. 构造函数和析构函数
def __init__(self,first = '',last = '',id = 0):
self.firstname = first
self.lastname = last
self.idint = id
def __del__(self):
print("self was dead")
4. 常用的运算符重载
| 方法 | 重载 | 调用 |
|---|---|---|
| __add__ | + | x+y |
| __or__ | | | x|y |
| __repr__ | 打印 | repr(x) |
| __str__ | 转换 | str(x) |
| __call__ | 函数调用 | x(*args,**key) |
| __getattr__ | 点号运算 | x.undefine |
| __setattr__ | 属性赋值 | x.any=value |
| __delattr__ | 属性删除 | del x.any |
| __getattribute__ | 属性获取 | x.any |
| __getitem__ | [] | x[key] |
| __setitem__ | 索引赋值 | x[key]=value |
| __delitem__ | 索引删除 | del x[key] |
| __len__ | 长度 | len(x) |
| __bool__ | 布尔测试 | bool(x) |
| __lt__,__gt__ | 小于,大于 | |
| __le__,__ge__ | 小于等于,大于等于 | |
| __eq__,__ne__ | 等于,不等于 | |
| __contain__ | in | item in x |
| __iter__,__next__ | 迭代 | I=iter(x),next(x) |
5. 继承
与C++继承实现类似
class sub(super):
def __init__(self):
5_Python OOP的更多相关文章
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- 一个简单oop的changeTab
好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...
- Python OOP(面向对象编程)
一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- 从OOP的角度看Golang
资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- iOS - 对OOA、OOD、OOP的理解
很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...
- OOP感悟
行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...
随机推荐
- ThinkPHP getBy动态查询
getBy动态查询 ThinkPHP getBy动态查询是一个魔术方法,可以根据某个字段名称动态得到对应的一条数据记录. 根据用户名(username)查询对应的用户资料记录: public func ...
- 2018.10.29 bzoj4564: [Haoi2016]地图(仙人掌+莫队)
传送门 根据原图建一棵新的树. 把原图每一个环上除了深度最浅的点以外的点全部向深度最浅的点连边. 然后可以搞出来一个dfsdfsdfs. 这个时候我们就成功把问题转换成了对子树的询问. 然后就可以对权 ...
- layer 弹框不显示内容
// layer的弹框不显示信息 可能是背景颜色和字体颜色冲突 改下字体颜色即可 layer.msg('<p style="color:black">用户名不能为空&l ...
- 百度地图经纬度和地址互转(Java代码)
这是基于springmvc+mybatis 的一个controller.如果不是这个框架,可以把方法实体抽到自己写的一个类中,然后再测试 package com.uwitec.controller.s ...
- HDU 5321 Beautiful Set (莫比乌斯反演 + 逆元 + 组合数学)
题意:给定一个 n 个数的集合,然后让你求两个值, 1.是将这个集合的数进行全排列后的每个区间的gcd之和. 2.是求这个集合的所有的子集的gcd乘以子集大小的和. 析:对于先求出len,len[i] ...
- 开发.Net Script 模板-MyGeneration (翻译)
原文信息 原文地址 原文作者信息 Justin Greenwood MyGeneration Software http://www.mygenerationsoftware.com/ October ...
- js中的事件代理(委托)
1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这 ...
- Java异常、事件、多线程
异常 捕捉异常,以便程序继续执行,同时可进行异常处理使程序更加健壮. Throwble类,派生Exception类和Error类,Exception类供应用程序用,Error类系统保留 ...
- 关于git的ssh permission denied原因汇总
SSH关于公钥认证Permission denied (publickey,gssapi-with-mic的问题 http://h2appy.blog.51cto.com/609721/1112797 ...
- elasticsearch5环境搭建
1.下载ElasticSearch https://www.elastic.co/cn/downloads/elasticsearch#ga-release 因为是windows版本,所以下载zip即 ...