类其实说通俗一点就是一个工厂,这个工厂是生产一些具有相同属性,而且有部分共同功能方法的物体,这里我就称它为工厂。
比如我们现在有一个工厂,工厂可以生产杯子,其中有大杯,小杯,隔热杯和不隔热杯。这些杯子有相同的属性就是它们都是杯子,有相同的功能就是都可以装水,它们不同的属性就是有的杯子大,有的杯子小,有不一样的功能就是隔热和不隔热,那么我们就称,工厂就是类,而真实存在的杯子就是对象。要先有工厂才有杯子也就是说要先有类才有对象。对象是由类产生的,下面说一下类的定义
1
2
3
|
class
class_name:
#属性
#方法
|
对象的产生
1
|
name
=
class_name
|
其中属性是大家都共同拥有的,但它是可以改变的。方法除了一些特殊的以外,是共用的。
1
2
3
4
5
6
7
8
9
|
class
Cat:
#属性
#方法
def
eat(
self
):
print
(
"猫在吃鱼..."
)
def
drink(
self
):
print
(
"猫在喝可乐..."
)
tom
=
Cat()
tom.eat()
|
上面代码中就定义了一个类Cat,还定义了两个方法drink和eat
第八行代码的意思是说让工厂Cat(类)生产一个tom的猫(对象),第九行代码就是去调用eat方法。
下面说一下属性的定义。
一般属性是定义在一个叫做__init__的方法里面的,这个init的意思就是初始化的意思,也就是说,这只猫刚刚被生产出来的时候就具备有这个的属性,不过这个属性是可以通过后天改变的。下面我们看看怎么定义属性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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__,我们可以先来看一个例子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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输出自己的信息,应该怎么做呢,可以看下面这个函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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
本文转自 周子琪 51CTO博客,原文链接:http://blog.51cto.com/izhouyu/1969590