作者:玉树【林】风
欢迎转载,也请保留这段声明。
什么是面向对象
面向对象(Object Oriented,OO)是软件开发的一种方法。
想要了解更多关于面向对象的概念,建议百度百科。
类定义
采用面向对象的开发方式,我们首先要对客观事物归类。
python类定义语法如下:
class 类名:
类成员
紧接着,我们需要将客观事物的属性和行为进行抽象。
例如:猫咪有2只眼睛、4个脚、1个尾巴、能够吃饭、睡觉、行走。其中2只眼睛、4个脚、1个尾巴属于猫的属性,而能够吃饭、睡觉、行走属于猫的行为。那么我们可以将这些属性和行为进行封装操作。
class Cat:
eyes = 2
legs = 4
tail = 1
def eat(self):
print('eating!')
def sleep(self):
print('sleeping!')
def walk(self):
print('walking!')
这样,我们就完成了对猫的属性和行为的封装,从而得到了一个猫类。
实例化
我们有了猫的类,就可以通过这个类来实例化很多的猫。
tom = Cat()
print('Tom has %d eyes' % tom.eyes)
tom.eat()
flash = Cat()
print('Flash has %d legs' % flash.legs)
flash.walk()
soft = Cat()
print('Soft has %d tail' % soft.tail)
soft.sleep()
输出为
Tom has 2 eyes
eating!
Flash has 4 legs
walking!
Soft has 1 tail
sleeping!
这里,我们实例化了3只猫。并且分别查看了他们的属性和行为。
查看实例的属性:实例名.属性名
调用实例的行为:实例名.方法名()
我们在猫类中增加一个方法,能够在实例化时可以区分猫的品种。
class Cat:
...
def __init__(self, breed):
self.breed = breed
...
# tom是一只加菲猫
tom = Cat('加菲猫')
# flash是一只美国短毛猫
flash = Cat('美国短毛猫')
print('Tom is a %s' % tom.breed)
print('Flash is a %s' % flash.breed)
输出为
Tom is a 加菲猫
Flash is a 美国短毛猫
这里我们定义了一个__init__方法,这个方法会在类被实例化时调用。__init__方法有两个参数,分别是self和breed。在之前定义猫类的方法中,也都有self这个参数。self参数表示类实例本身,从上面的例子中我们可以发现通过初始化方法设置的breed属性和猫类无关,只与每一个猫实例有关。并且在方法调用时不需要我们手动传入self参数,系统会自动的传入这个参数。因此在类方法的调用时,我们只要从第二个参数开始传递即可。
总结
今天我们学习了面向对象的相关知识。
什么是面向对象。
如何定义一个类,如何封装属性和方法。
如何实例化一个类,self参数的作用,__init__方法何时被调用。