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

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

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