上一篇文章我们简单的介绍了面向对象编程和面向过程编程,并详细详细介绍了面向对象编程的一些术语,接下来,我们将继续学习面向对象编程,简单介绍类和对象,面向对象三大特征,及面向对象重载和重写。
Part.1 类和对象
面向对象中最重要的概念是类和对象,类是对于现实世界抽象的模板,对象是根据类创建出来的一个个具体的实例 。以动物为例,我们知道,动物是对于现实世界中物种的抽象,具体的猫狗鸡鸭等均可称为动物,动物可以作为一个类,那猫和狗也可以称之为对象。
在python中,我们用 class 来定义类,比如说,我们定义一个猫的类,定义全局变量name为 cat 。
# 定义一个Cat类,在类体中定义类属性
class Cat:
# 定义类属性species,来表示猫所属的物种
name = "cat"
在类中,类方法表示类共有的行为。在类体中通过 def 来定义一个函数,来表示该类的方法。类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,该方法的主要作用在于初始化参数,其第一个参数永远为self,用于表示实例化对象本身。
pyhon中常见的方法简介。
静态方法: 用 @ staticmethod装饰的不带self参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个cls参数,可以被类和对象调用,需要加上 @ classmethod装饰器。
# -*- coding: utf-8 -*-
"""
@Time : 2021/8/28 10:35
@Author : LYP
@FileName: pyOOP.py
@SoftWare: PyCharm
"""
class Cat :
# 定义类属性species,来表示猫所属的物种
species = "cat"
#定义初始方法
def __init__(self,name,age,):
self.name=name
self.age=age
# 定义函数,输出猫的信息
def catifo (self) :
print("猫的名字为",self.name)
print("猫的年龄为:",self.age)
#定义函数,命令猫坐下
def play( self):
""" 命令猫坐下"""
print(self.name+" is now playing")
def sleep( self):
print(self.name+" is sleeping")
#实例化对象
Tom =Cat("Tom",2)
Tam =Cat("Toam",4)
#打印全局变量
print("Tom的类别是",Tom.species)
print("Tam的类别是",Tam.species)
#调用实例化类
Tom.catifo()
Tom.sleep()
Tom.play()
Tam.catifo()
Tam.play()
Tam.sleep()
在上述代码中,
1,方法 __init()__, __init()__是一种特殊的方法,在这个方法中,开头和结尾各自有两个下划线,三个形参,self,name,age,在实例化时传入name,age即可
2,三个方法,catifo打印猫的基本信息,sleep和paly分别说明猫的状态,
3,实例化猫的类,将其定义为Tom,Tam,并