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的更多相关文章

  1. c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

    字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...

  2. 一个简单oop的changeTab

    好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...

  3. Python OOP(面向对象编程)

    一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...

  4. OOP,WEB开发实用小技巧

    偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...

  5. 从OOP的角度看Golang

    资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...

  6. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

  7. Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系

    Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...

  8. iOS - 对OOA、OOD、OOP的理解

    很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...

  9. OOP感悟

    行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...

随机推荐

  1. 通过http.client解析url返回的数据时为什么中文变成了unicode码

    今天在解析json数据的时候得到了一堆这样的数据:{"errNum":0,"errMsg":"success","retData& ...

  2. 2018.11.05 bzoj2143: 飞飞侠(最短路)

    传送门 最短路好题. 考虑对每个二维坐标建立一个高度属性. 这样每次如果在点(i,j,0)(i,j,0)(i,j,0)只能选择花费bi,jb_{i,j}bi,j​跳向(i,j,ai,j)(i,j,a_ ...

  3. [zhuan]SQLServer查询最近一天,三天,一周,一月,一季度方法

    三天 select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day,addtime,getdat ...

  4. Win7 VS2013环境编译Lua5.3.1

    主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lu ...

  5. boost--asio

    1.asio综述 asio的核心类是io_service,它相当于前摄器模式的Proactor角色,在异步模式下发起的I/O操作,需要定义一个用于回调的完成处理函数,当I/O完成时io_service ...

  6. lambda表达式(c++11)

    1.概念 1)lambda表达式是一个可调用的代码单元,它由一个捕获列表.一个参数列表.一个箭头.一个返回类型.一个函数体组成: 2)可以忽略参数列表和返回类型,但必须包含捕获列表和函数体: 3)忽略 ...

  7. [转]深入理解mysqldump原理

    本文转至:http://blog.csdn.net/cug_jiang126com/article/details/49824471 在mysqldump过程中,之前其实一直不是很理解为什么加了--s ...

  8. ActiveMQ -5.9和jms-1.1源码下载

    ActiveMQ-5.9和jms-1.1源码下载:见附件

  9. Maven之java application _HelloWord

    maven  是一个项目构建的一个工具; 一.环境的配置; 1.下载maven 解压放在一个路径下为了好找我们就将该文件放在 D:\javaNew\apache-maven-3.3.9 2.配置本地仓 ...

  10. java 调用c++程序实例

    1.java程序: package com.zhangshitong; import java.io.File; public class Java2cpp { static{ System.load ...