类和对象

python类之特殊属性和魔术方法

一曲冷凌霜 提交于 2019-12-06 21:19:07
一 python特殊属性 1 总述 属性 含义 _ name_ 类,函数,方法等的名字 _ module_ 类定义所现在的模块名 _ class_ 对象或类所属的类 _ bases_ 类的基类的元素,顺序为他们在基类列表中出现的顺序 _ doc_ 类/函数的文档字符传,如果没有定义则为None _ mro_ 类的mro,class.mro()返回 _ dict_ 类或实例的属性,可写的字典 _ dir_ 返回了类或者对象所有成员列表,dir()函数调用的是_ dir_ (),如果提供了_ dir_ (),则返回属性列表,否则尽可能从__dict__属性中收集信息 2 name 获取类和函数的名字 #!/usr/local/bin/python3.6 #coding:utf-8 class A: pass class B(A): pass def C(): pass print (A.__name__,B.__name__,C.__name__,sep='\n') 3 module 类定义所在的模块名 #!/usr/local/bin/python3.6 #coding:utf-8 class A: pass class B: pass print (A.__module__,B.__module__) #!/usr/local/bin/python3.6 #coding:utf-8

PHP的类和对象

我怕爱的太早我们不能终老 提交于 2019-12-06 11:31:12
自PHP 5以来,引入了对象模型,新特性包括 访问控制 , 抽象类 和 final类与方法 ,附加的魔术方法,接口,对象复制和类型约束,PHP对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝,可与C++进行类比。 class: 每个类都以关键字class开头,后面跟着类名,再后面跟着一对花括号,里面包含类的属性与方法的定义,类名可以是任何非PHP保留字的合法标签,一个合法类名以字母或下划线开头,后跟着若干字母,数字或下划线,以正则表达式表示为:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。一个类可包含有属于自己的常量,变量以及函数。 实例#1:简单类定义 <?php class SimpleClass { //声明变量 public $var = 'a default value'; //声明方法 public function displayVar(){ echo $this->var; } } ?> 当一个方法再类定义内部被调用时,有一个可用的伪变量$this,$this是一个到主叫对象的引用,通常是该方法所从属的对象,但若是从第二个对象静态调用时也可能是另一个对象。 实例#2:伪变量$this实例: <?php error_reporting(0); //屏蔽STRICT警告 class A {

实验七--类和对象(2)

泪湿孤枕 提交于 2019-12-06 09:55:11
1. 【问题描述】 自定义一个日期时间类DateTimeType,它含有类DateType与类TimeType的类对象作为其数据成员,并具有所列的其他几个成员函数。而后编制主函数,说明DateTimeType的类对象,并对其成员函数以及二对象成员所属类的公有成员函数进行使用。 class DateTimeType { //自定义的日期时间类 DateTimeType DateType date; //类 DateType 的类对象 date 作为其数据成员 TimeType time; //类 TimeType 的类对象 time 作为其另一个数据成员 public: DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0); //构造函数,设定 DateTimeType 类对象的日期时间,并为各参数设置了默认值 DateType& GetDate(){ return date; } //返回本类的私有数据对象 data TimeType& GetTime(){ return time; } //返回本类的私有数据对象 time void IncrementSecond(int s); //增加若干秒,注意“进位”问题 void PrintDateTime(); /

类的构造和析构

送分小仙女□ 提交于 2019-12-06 08:50:29
类的构造和析构 类对象不能用列表初始化是因为数据访问状态为私有。 如果将访问状态改为公有,那么就可以使用大括号初始化的方法。但是违背了数据隐藏的初衷。 声明和定义构造函数 声明,其中可以包含默认参数 Stock(const string & co, long n = 0, double pr = 0.0); 定义 Stock::Stock(const string & co, long n, double pr) { ... } 为避免成员名和参数名混乱,常见的做法是在成员名前加m_前缀或加_后缀。 使用构造函数 c++提供两种使用构造函数来初始化对象的方式。第一种是显式的调用构造函数。 Stock food = Stock("yang", 29, 1.2); 另一种是隐式的调用 Stock food("yang", 29, 2.1); 使用new分配内存时,c++都使用构造函数。在这种情况下,该对象没有名字,但可以使用指针来管理对象。 Stock *food = new Stock("yang", 29, 1.2); 默认构造函数 默认构造函数是在未提供显式初始值时,用来创建对象的构造函数。 Stock food; 当且仅当没有定义构造函数时,编译器才会提供默认构造函数。 为类定义了构造函数后,就必须提供默认构造函数。否则该声明会出错。Stock food;

String 类和常量池

大憨熊 提交于 2019-12-06 08:29:51
1、String 对象的两种创建方式: // 在常量池中拿对象String str1 = "abcd"; // 直接在堆内存空间创建一个新的对象 String str2 = new String("abcd"); sout(str1 == str2); // false 注: 只要使用 new方法,便需要创建新的对象 2、 String类型的常量池比较特殊。它的主要使用方法有两种 * 直接使用双引号声明出来的 String 对象会直接存储在常量池中。 * 如果不是用双引号声明的String对象,可以使用 String 提供的intern方法。 String.intern()是一个本地方法,它的作用是:如果运行时常量池已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。 String s1 = new String("计算机"); String s2 = s1.intern(); String s3 = "计算机"; System.out.println(s2);//计算机 System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象, System.out.println

类和对象的关系

只谈情不闲聊 提交于 2019-12-06 06:42:41
4.2.6 类和对象的关系 类和对象是面向对象方法的核心概念,类是对某一类事物的描述,是抽 象的、概念上的定义,对象是实际存在的该类事物的个体,例如,可以 定义一个桌子类,通过这个桌子类,可以定义多个桌子对象,还可以把 桌子类看成是一个模板或者图纸,按照这个图纸就可以生产出许多桌 子。 对象和对象之间可以不同,改变其中一个对象的某些属性,不会影响到 其他的对象,例如按照桌子的图纸,可以生产出相同的桌子,也可以生 产出不同高度的桌子。 来源: https://www.cnblogs.com/qobin/p/11966178.html

类、对象和包

不问归期 提交于 2019-12-06 04:24:13
类: Java 中的类用关键字 class 声明。Java 源代码文件中只能包含一公用(public)类,文件名 必须与公用类的类名相同,文件扩展名为“.java”。 对象的属性成为相关类中的成员变量。类中的一个成员变量由如下部分组成: 1. 访问修饰符 。可以是 public、private 或 protected;如果省略了访问修饰符,将使用默 认访问修饰符。 2. 数据类型。 3. 成员变量名称 。成员变量名称必须是一个有效的标识符,后面用分号结束。 例如: public class Employee {   public String name; //姓名    public String address; //邮寄地址    public int number; //员工号    public int SSN; //社保号    public double salary; //员工的工资    } 一个员工有姓名和地址,所以Employee 类就有一个 name 成员变量和 一个 address成员变量。 每个员工还有其它的属性,例如,身高、体重等等。 对象: 实例化对象: 在 Java 中,new 关键字用于实例化一个对象。new 运算符在内存中创建一个对象,并返回对新创建的对象的一个引用。只要我们的程序保留对该对象的一个引用,那么这个对象将一直 保留在内存中。 例如:

python的类和对象的创建

主宰稳场 提交于 2019-12-06 04:14:04
最近接触到了一些面向对象编程的内容,涉及到了一些对象和类的只是,在这里复习一下,附上学习代码如下 1 class Person: 2 hair = 'black' #此处定义一个类变量hair 3 def __init__ (self, name='charlie', age = 22): 4 #此处为Person对象增加两个实例变量 5 self.name = name 6 self.age = age 7 8 #d定义一个say方法 9 def say(self, content): 10 return content 11 12 #调用person类的构造方法,返回Person的一个对象并将该对象赋值给p 13 p = Person() 14 #输出p的name和age两个实例变量,此时这两给变量还是默认值 15 print(p.name,'\n',p.age) 16 #访问p的实例变量name,并为他重新赋值 17 p.name = 'wind_under_the_wing' 18 19 #调用p的say方法, 20 21 print('hello,I am ' + p.name + ',' + p.say('welcome to my blog')) __init__是构造方法,用于创建对象,某个类最少要有一种构造方法,调用该类的构造方法即可创建这个类的对象 来源:

类的魔法方法和部分单例模式

天大地大妈咪最大 提交于 2019-12-06 02:37:28
类的内置方法(魔法方法) 凡是在类内部定义,以——开头——结尾的方法,都是类的内置方法,也称之为魔法方法 类的内置方法, 会在某种条件下自动触发 内置方法如下: __ new __ : 在__ init __ 触发前触发,调用该类时会通过 __ new __ 产生一个新的对象 __ init __ : 在调用类时,自动触发。通过产生的对象自动调用 __ init __ ''' 类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法。 类的内置方法,会在某种条件满足下自动触发。 内置方法如下: new : 在__init__触发前,自动触发。 调用该类时,内部会通过__new__产生一个新的对象。 init : 在调用类时自动触发。 通过产生的对象自动调用__init__() ''' class Demo(object): 条件: __new__: 在__init__触发前,自动触发。 def __new__(cls, *args, **kwargs): print('此处是__new__方法的执行') python内部通过object调用内部的__new__实现产生一个空的对象 ---> 内存地址 return object.__new__(cls, *args, **kwargs) 条件: __init__: 在调用类时自动触发

Java 对象和类

怎甘沉沦 提交于 2019-12-06 02:22:16
Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 消息解析 本节我们重点研究对象和类的概念。 对象 :对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: package codingdict.com; public class Dog { // 血统 String breed; // 年龄 int age; // 颜色 String color; // 吠叫 void barking() { } // 饿了 void hungry() { } // 睡觉 void sleeping() { } }