类和面向对象

类其实说通俗一点就是一个工厂,这个工厂是生产一些具有相同属性,而且有部分共同功能方法的物体,这里我就称它为工厂。

比如我们现在有一个工厂,工厂可以生产杯子,其中有大杯,小杯,隔热杯和不隔热杯。这些杯子有相同的属性就是它们都是杯子,有相同的功能就是都可以装水,它们不同的属性就是有的杯子大,有的杯子小,有不一样的功能就是隔热和不隔热,那么我们就称,工厂就是类,而真实存在的杯子就是对象。要先有工厂才有杯子也就是说要先有类才有对象。对象是由类产生的,下面说一下类的定义

class class_name:
#属性
#方法

对象的产生

name = class_name

其中属性是大家都共同拥有的,但它是可以改变的。方法除了一些特殊的以外,是共用的。

class Cat:
    #属性
    #方法
    def eat(self):
        print("猫在吃鱼...")
    def drink(self):
        print("猫在喝可乐...")
tom = Cat()
tom.eat()

上面代码中就定义了一个类Cat,还定义了两个方法drink和eat

第八行代码的意思是说让工厂Cat(类)生产一个tom的猫(对象),第九行代码就是去调用eat方法。

下面说一下属性的定义。

一般属性是定义在一个叫做__init__的方法里面的,这个init的意思就是初始化的意思,也就是说,这只猫刚刚被生产出来的时候就具备有这个的属性,不过这个属性是可以通过后天改变的。下面我们看看怎么定义属性:

class Cat:
    #属性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("猫在吃鱼...")
    def drink(self):
        print("猫在喝可乐...")
    def introduce(self):
        print("%s的年龄是%d"%(self.name,self.age))
tom = Cat(‘littlecat‘,40)
tom.introduce()
print(tom.name)
print(tom.age)

其中,__init__方法就是定义属性的方法,通过__init__方法可以看到这个方法需要三个参数,所以在生成对象的时候要传入三个参数,可是为什么我们在13行代码中,只传递两个参数呢,因为self这个参数是指对象本身,比如十三行代码中,我们生成的对象是tom,那么self就是tom,也就是说,如果你想调用tom里面的self.name变量的时候,就可以写成这样tom.name。而new_name对应的就是我们传入的十八行代码中传入的第一个参数littlecat,所以new_name就等于littlecat,new_age就是40。你把上面的代码执行一下你就知道了。

下面再说一个方法__str__,我们可以先来看一个例子。

class Cat:
    #属性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("猫在吃鱼...")
    def drink(self):
        print("猫在喝可乐...")
    def introduce(self):
        print("%s的年龄是%d"%(self.name,self.age))
tom = Cat(‘littlecat‘,40)
print(tom)

打印出来的tom的信息其实就是tom这个对象在系统中放在的内存地址。这个我们看不懂呀。那怎么办,如果你想打印出tom的时候,是让tom输出自己的信息,应该怎么做呢,可以看下面这个函数。

class Cat:
    #属性
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age
    #方法
    def eat(self):
        print("猫在吃鱼...")
    def drink(self):
        print("猫在喝可乐...")
    def introduce(self):
        print("%s的年龄是%d"%(self.name,self.age))
    def __str__(self):
        return "%s今年大概是%d"%(self.name,self.age)
tom = Cat(‘littlecat‘,40)
print(tom)

__str__函数其实就是一个描述信息的方法,这个方法在我们去打印一个对象的时候,它就会返回__str__方法里面的返回信息。不过有一点要注意一下就是__str__方法一定要有return

时间: 2024-11-08 23:55:51

类和面向对象的相关文章

类与面向对象基础(一)

一.类与对象 类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字.轮胎.速度.重量等属性,可以有换挡.前进.后退等操作方法. 通常定义一个汽车类的方法为: class Car { $name = '汽车'; function getName() {   return $this->name; } } 类是一类东西的结构描述,而对象则是一类东西的一个具体实例,例如汽车这个名词可以理解为汽车的总类,但这辆汽车则是一个具体的汽车对象

类(面向对象、增删改查、继承、多态、封装、反射)

类的增删改查可以操作类里面的函数.数据属性,实例. 1.函数与类的区别 函数实现功能的模块化 类是实现功能和数据的模块化 ——init——类的构造:初始化类,实例化的时候自动执行2.类用法 4.什么是类, 类是把一类事物的相同的特征和同一动作整合到一类,类是抽象的5.什么是对象 对象就是基于类创建的一种事物,也是特征和动作整合到一起的6.面向对象 就是__init__独特构造7.类和对象的关系 对象都是类产生的.8.实例化:有类产生的过程叫实例化9.新式类类名后面括号里加object10.什么是

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

4月29 加载类以及面向对象的例题

加载类:从现在养成的习惯以后写类名时:每个单词的首字母的大写,这样的命名方法叫做驼峰法,eg:Info.class.php 这样很快可以看清楚就是一个Info的类 在php代码里面,/代表本地磁盘的根,(该文件所在的应聘)在html代码里面,/代表的是当前的站点目录(这里是www目录) 加载类的方法:将文件名加载到页面,最好是在同一个路径下,参数是一个路径(能够找到类文件) include("Info.class.php"); //直接写文件名的加载 include "Inf

Python3 学习第五弹:类与面向对象

对于面向对象总是要提到,万物皆对象.好似博大精深的感觉. 接下来一起看看python的面向对象的例子 创建一个对象 class Person: type = 'person' def __init__(self, name = 'Noname'): self.name = name def hello(self): print("hello, I'm " + self.name) >>> Mike = Person('Mike') >>> Mike.

PHP类与面向对象

PHP常量PHP常量大写PHP常量用define函数或const关键字定义一个常量一旦被定义,就不能再改变或者取消定义.在 PHP 5.3.0 以后,可以使用 const 关键字在类定义之外定义常量. 预定义常量:__LINE____FILE__ define("FOO1", "something1"); define("FOO2", "something2"); define("FOO3", "

python之基础篇(七)——类与面向对象

防伪码:忘情公子著 面向对象编程(OOP) 程序 = 指令+数据 代码可以选择以指令为核心或以数据为核心进行编写. 两种范型: 以指令为核心:围绕"正在发生什么"进行编写 面向过程编程:程序具有一系列线性步骤.主体思想是代码作用于数据 以数据为核心:围绕"将影响谁"进行编写 面向对象编程(OOP):围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访问 面向对象的核心概念 所有编程语言的最终目的都是提供一种抽象方法. 在机器模型("解空间&quo

java(7)类与面向对象

面向对象的特性:封装,继承,多态,抽象 面向过程步骤,面向对象功能 类 成员变量 默认初始化 堆 有修饰符 局部变量 无初始值 方法内部 栈 只有修饰符(final) 方法 参数 基本类型 值传递 引用类型 值传递 类比较,.equals()比较的是引用地址 this JDK已有的类:Date Integer package testDemo; import java.util.Date; public class test { public void showDate(Date d) { Sy

lua 类, 继承, 面向对象再次理解

本文转载于:http://blog.csdn.net/teng_ontheway/article/details/38900211 1.lua中的类 lua中其实是没有类的,有的只是表(table),而类之间的继承也就是将父类的表连到了一起,派生类中没有找到的属性和方法就通过元表查找父类 2.lua中类的属性 classA = {width =10, height=10} classA={} classA.width=10 classA.height=10 两种方法都可以,通过点self.wid

【cocos2d-x3.2游戏开发】 lua 类, 继承, 面向对象

1.lua中的类 lua中其实是没有类的,有的只是表(table),而类之间的继承也就是将父类的表连到了一起,派生类中没有找到的属性和方法就通过元表查找父类 2.lua中类的属性 classA = {width =10, height=10} classA={} classA.width=10 classA.height=10 两种方法都可以,通过点self.width统一调用 3.类方法 function Box:collsion() -- 默认第一个参数隐藏传递self,可以通过self.x