python面向对象之初步认识

假装没事ソ 提交于 2020-02-28 10:22:02
面向对象

类,用来描述一类事物的相同的特征或者属性。比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪叫。。。再比如汽车,四个轮子,都拥有车壳,都会跑,都有一定的承重。。。这些都是具备一些共同特征的事物。

类的定义方式:

class ClassName:
    '类的帮助信息'  # 类文档字符串
    class_suite  #类体,由类成员,方法,数据属性组成

下面是一个简单类的定义,其中函数内的self代指类的实例


class Cat:
    'Cat类的帮助信息'

    def __init__(self):  # 类的初始化方法
        print("Cat 的init方法被调用")

    def eat(self):  # 自定义方法
        print("cat is eating")

    def run(self):  # 自定义方法
        print("cat is running")

如何使用这个类?与调用函数的方式类似,类的使用是通过类名()进行使用,返回的是一个对象,也就是实例。

tom = Cat()
print(tom)  # <__main__.Cat object at 0x000001B4A55123C8>

类中不仅仅可以定义函数,还可以定义变量。

class Car(object):
    'Car'
    CarCount = 0  # 类属性

    def __init__(self):
        self.name = '法拉利'
        Car.CarCount += 1

    def run(self):
        print("%s" % self.name)


car = Car()
car1 = Car()

其中CarCount是类属性,只要是通过Car类实例化而来的,这些实例化对象便共享这一类属性,而__init__()函数中的name则是实例属性,属于每个实例独有的,虽然变量名相同,但是取值确是可以不同。还有一点这个例子中类的声明方式改变了,使用了python中的新式类的声明方式,即class 类名(object):pass,而之前的是使用的经典类的声明方式,关于两者区别可以看着这里新式类与经典类的区别

class Car(object):
    'Car'
    CarCount = 0  # 类属性

    def __init__(self, name):
        self.name = name
        Car.CarCount += 1

    def run(self):
        print("%s is running" % self.name)


car = Car('法拉利')
print(Car.CarCount)
car.run()
car1 = Car('大奔')
print(Car.CarCount)
car1.run()

通过Car.CarCount我们可以发现 CarCount的值改变了,而且是通过不同的实例改变的同一个变量,这更加说明类属性是属于某个类实例化的所有的对象共有的,__init__函数里面比之前又多了一个形参,其中__init__函数被称为类的构造函数,是当一个对象实例化之后自动执行的函数,其中,类的普通的成员函数一般都至少具备一个self参数,比普通的函数稍微特别一点,self是个很神奇的参数,不写不行,当调用类的成员函数时,可以通过打印self查看,我们会看到一般都会打印出<__main__.Car object at 0x000001ABF02D8CF8>这样类似的语句,可以看出self可以用来代表实例化的对象。当调用类中的方法是通过

对象名.函数名()进行调用的。

 到这里可以书写简单的类了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!