类和面向对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和面向对象相关的知识,希望对你有一定的参考价值。
类其实说通俗一点就是一个工厂,这个工厂是生产一些具有相同属性,而且有部分共同功能方法的物体,这里我就称它为工厂。
比如我们现在有一个工厂,工厂可以生产杯子,其中有大杯,小杯,隔热杯和不隔热杯。这些杯子有相同的属性就是它们都是杯子,有相同的功能就是都可以装水,它们不同的属性就是有的杯子大,有的杯子小,有不一样的功能就是隔热和不隔热,那么我们就称,工厂就是类,而真实存在的杯子就是对象。要先有工厂才有杯子也就是说要先有类才有对象。对象是由类产生的,下面说一下类的定义
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
本文出自 “爱周瑜” 博客,请务必保留此出处http://izhouyu.blog.51cto.com/10318932/1969590
以上是关于类和面向对象的主要内容,如果未能解决你的问题,请参考以下文章