类和对象

实例方法、类方法和静态方法

耗尽温柔 提交于 2020-04-08 13:58:07
Python中常用的三种方法: 1. 实例方法 (常见函数) 2. 静态方法 (@staticmethod) 3. 类方法 (@classmethod) 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法); 调用:只能由实例对象调用。 类方法 定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它性来传递类的属和方法(不能传实例的属性和方法); 调用:实例对象和类对象都可以调用。 静态方法 定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用实例的任何属性和方法,使用类的属性和方法需要使用类对象引用; 调用:实例对象和类对象都可以调用。 一、区别    二、代码示例    #!/usr/bin/env python # -*- coding:utf-8 _*- __author__ = '池偏一' ''' @author:shz @license: Apache Licence @file: testargs.py @time: 2018/06/19 @site: @software: PyCharm ''' import sys reload(sys) sys.setdefaultencoding

Java ------ StringBuffer 类和 String Builder 类

ぃ、小莉子 提交于 2020-04-07 01:44:25
一、使用StringBuffer 类处理字符串 StringBuffer 也可以用来存储字符串,比String 类更高效的存储字符串的一种引用数据类型,特别是对字符串进行连接操作时,使用StringBuffer 类可以大大提高程序的执行效率。 1、使用StringBuffer 类 StringBuffer 类位于java.util包中,是String 类的增强类。 声明StringBuffer 类并初始化 StringBuffer stringBuffer = new StringBuffer("obge"); 2、StringBuffer 类常用方法 String toString() : 转换为String 类型的对象并返回 StringBuffer append(参数); 追加字符串,将参数连接到字符串后并返回。 append() 方法与concat() 方法一样都是把一个字符串追加到另一个字符串后。 不同的是String类中只能将String类型的字符串追加到另一个后面,StringBuffer类中可以将任何类型的值追加到字符串后。 StringBuffer insert() : 插入字符串 字符串 . insert(位置,参数); //将参数插入到指定位置后并返回stringBuffer 类型,参数值可以是包括任何类型的值 在StringBuffer类中的定义 例子:

js自定义类和对象及继承

…衆ロ難τιáo~ 提交于 2020-03-27 05:19:36
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Object(); p.name=name; p.say = function(){alert(p.name+'ff');} return p; } var p1 = createObject("p1"); var p2 = createObject("p2"); alert(p1.name+" "+p2.name); p1.say();p2.say(); alert(p1.say==p2.say); //false </script> 问题:每创建一个对象,对象的方法是新对象,浪费资源 2、构造函数方式 <script type="text/javascript"> function Person(name){ this.name = name; this.say = function(){ alert("I am "+this.name); } } var p1 = new Person("wang"); var p2 = new Person("li"); p1.say(); p2.say(); alert(p1.say==p2.say); //false </script> 问题: 创建对象时比工厂方法更易于理解。

7、群体类和群体数据的组织-1.函数模板和类模板

巧了我就是萌 提交于 2020-03-26 09:17:56
基本数据类型是c++编译系统预定义的,而自定义类型的数据是 由多个基本类型或自定义类型 的元素组成的,我们称之为 群体数据 。 对于群体数据,仅有系统预定义的操作是不够的,在很多情况下,还需要设计与某些具体问题相关的特殊操作,并按照面向对象的方法将数据与操作封装起来, 这就是群体类 。 群体可以分为两种: 线性群体和非线性群体 。线性群体中的元素 按位置排列有序 。非线性群体 不用位置顺序来标识元素。 关于群体数据的组织是属于数据结构的范畴,这里只介绍两类常用的算法:排序和查找方法。 排序:又称为分类或整理,是将一个无序序列调整为有序的过程。在排序的过程中需要完成两种基本操作 :一是比较两个数的大小,二是调整元素在序列中的位置 。排序方法:直接插入排序、直接选择排序和起泡排序。 查找:是在一个序列中按照某种方式找出需要的特定数据元素的过程。方法:顺序查找、折半查找。 1、函数模板与类模板 通用代码 需要不受数据类型的影响 , 并且可以自动适应数据类型的变化 。 这种程序设计类型称为参数化程序设计 。 模板 是c++支持参数化程序设计的工具,通过它可以实现参数化多态性 。 所谓参数化多态性 , 就是将程序所处理的对象的类型参数化 ,使得一段程序可以用于处理多种不同类型的对象。 1)函数模板 程序员只需对函数模板编写一次, 然后 基于调用函数时提供的参数类型 , c+

7、群体类和群体数据的组织-2.线性群体

跟風遠走 提交于 2020-03-26 09:17:20
1、线性群体的概念 线性群体中的 元素次序与其位置关系 是对应的。在线性群体中,又 可按照访问元素的不同方法分 为直接访问、顺序访问和索引访问。 对可直接访问的线性群体,我们可以直接访问群体中的任何一个元素,而不必首先访问该元素之前的元素。 对顺序访问的线性群体,只能按元素的排列顺序从头开始依次访问各个元素。 还有两种特殊的线性群体--栈和队列。 2、直接访问群体---数组类 针对静态数组的缺陷,我们来 设计一个动态数组类模板Array ,它由任意多个位置连续的,类型相同的元素组成,其元素个数可在程序运行是改变。 a、数组类 数组类模板Aarray的 声明和实现 都在shuzu.h文件中,程序清单如下: #ifndef ARRAY_CLASS #define ARRAY_CLASS #include<iostream> #include<cstdlib> using namespace std; #ifndef NULL const int NULL=0; #endif //NULL //错误类型集合,共有三种类型的错误:数组大小错误、内存分配错误和下标越界 e num ErrorType { invalidArraySize,memoryAllocationError,indexOutOfRange }; //错误信息 char *errorMsg[] = { "Invalid

C++的类和对象--权限public-private-protected

ぃ、小莉子 提交于 2020-03-22 22:42:24
  类是一种将抽象转换为用户自定义类型的C++工具,它将 数据表示(基本成员)和操作数据的方法(成员函数) 组合成一个整洁的包   两个表格有由自己整理,其他参考自: http://blog.163.com/clevertanglei900@126/blog/static/1113522592010114102759821/    当private,public,protected单纯的作为一个类中的成员权限设置时:    C++的类和对象的权限1 权限 类内部 该类对象 子类(派生类) 友元函数 private 可访问  不可访问   不可访问 可访问 public 可访问 可访问 可访问 可访问 protected 可访问 不可访问  可访问 可访问   private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.    protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但 不能被该类的对象 访问   public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问   注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数    当private,public,protected作为继承方式时: C++的类和对象的权限2(相对于基类成员) 继承方式 基类对象 派生类 派生类对象

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

大兔子大兔子 提交于 2020-03-21 07:38:20
1、函数 php内置函数可以直接使用,如果没有安装php扩展即可 自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数值 echo ‘<pre/>’; var_dump($var); } 2、类(class)和对象( new Obj) <?php //定义一个人的类,现在还不是对象 class Person { //私有属性 private $eye = '大眼睛'; private $mouth = '小嘴巴'; private $leg = '大长腿'; //构造方法 new 对象的时候自定调用 public function __construct() { echo __CLASS__; } public function run() { echo $this->leg; } //学习 会用到 腿(走路)、眼睛(看书)、嘴(念书) public function study() { echo $this->leg, $this->eye, $this->mouth; } } //使用类 new以后就变成了对象 $person = new Person(); //输出 Person $person -> run(); //输出 大长腿 $person -> study(); //输出 大长腿 大眼睛 小嘴唇 3

实验6:Problem F: 时间和日期类(IV)

≯℡__Kan透↙ 提交于 2020-03-19 13:59:05
Description 设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。 设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象; 设计DateTime类需支持以下操作: DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒; DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象; 在上述两个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d, hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象; 在这个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d) (hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime:DateTime(const DateTime&)构造方法:拷贝构造函数,初始化对象。 在拷贝构造函数中输出:“COPY DateTime : (y, m,

「实验 4 类和对象-2」

梦想的初衷 提交于 2020-03-19 07:10:47
1.实验内容2 graph类 /*附加拓展1和2*/ draw()函数的话,因为每一行输出的是空格和规定字符,输出空格数等于 总行数-当前行数 ,输出字符数等于 当前行数*2-1 。 graph.h 1 #ifndef GRAPH_H 2 #define GRAPH_H 3 4 // 类Graph的声明 5 class Graph { 6 public: 7 Graph(char ch, int n); // 带有参数的构造函数 8 void draw(); // 绘制图形 9 void redraw(); //重绘图形 10 void changecolor(); //改变颜色 11 private: 12 char symbol; 13 int size; 14 }; 15 16 17 #endif graph.cpp 1 #include "graph.h" 2 #include <iostream> 3 #include<cstdlib> 4 using namespace std; 5 6 // 带参数的构造函数的实现 7 Graph::Graph(char ch, int n): symbol(ch), size(n) { 8 } 9 10 11 // 成员函数draw()的实现 12 // 功能:绘制size行,显示字符为symbol的指定图形样式 13 //

JS 基本数据类型和引用数据类型

佐手、 提交于 2020-03-18 02:03:32
本文章已收录于: /*--> */ /*--> */ 基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值。 基本类型值 指的是简单的数据段; 引用类型值 指由多个值构成的对象。当我们把变量赋值给一个变量时,解析器首先要做的就是确认这个值是基本类型值还是引用类型值。 常见的五种基本数据类型是: Undifined、Null、Boolean、Number和String。这五种基本数据类型可以直接操作保存在变量中的 实际值 。 看下面例子: var a = 10; var b = a; b = 20; console.log(a); // 10 var bl = true; var bl1 = bl; bl1 = false; console.log(bl); // true 上面,b获取值是a值的一份拷贝,虽然,两个变量的值是相等,但是两个变量保存两不同的基本数据类型值。b只是保存了a复制的一个副本。所以,当b的值改变时,a的值依然是10; 下面,两个Boolean变量bl和bl1同样是基本数据类型,同样保存两个不同的基本数据据类型值,bl1保存bl复制的一个副本。 下图演示了这种基本数据类型赋值的过程: 下面看一下引用类型数据: JavaScript 引用数据类型是保存在堆内存中的对象,与其它语言不同的是