概述
类和方法
- 一、前言
- 二、方法(函数)
- 三、类
- 1、类的基本使用
- 2、类的继承
- 3、方法的重写
- 四、总结
一、前言
这章我们来介绍类和方法,方法就是函数,可以将某些功能集中封装起来,起到模块划分和复用的作用,不用再像之前那样,每次用的时候写上一大堆的代码,这样很不利于开发;而类,是用来描述具有相同的属性和方法的对象的集合,俗话说的好,一切皆对象,用面向对象的思维编程,可以让我们代码更加扩充性更好,维护也更加的方便
二、方法(函数)
我们之前使用最多的就是print,他就是一个打印函数,只要传进去相对应的值,那他就会给我们打印出来,这是他的功能,那我们也可以将我们自己常用的,或者分类较明确的封装成函数,这样方便别的模块进行调用,函数的基本框架如下:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
functionname就是你函数的名字,可以任意起(注意:不能跟已有的函数名重名)
parameters是参数,比如print函数需要的参数,就是你需要打印什么内容,这个参数你可以定义为字符串,整型,列表等等,也可以定义多个参数,中间用逗号分隔开来即可
function_suite就是你的函数要实现的内容啦,你可以做一个简单的加法,也可以实现一个复杂的算法之类的
expression最后的return,是调用这个函数之后,要返回什么值,当然,如果没有需要返回的,这一行可以不用写
那么用几个简单的例子让大家知道函数的最基本的用法吧:
def plus(x: int, y: int): # 指定两个整型参数x, y,后面的int表示必须传入整型的值,其他类型的值传进来会报错
z = x + y # 执行x + y的操作,并将结果赋值给z
return z # 返回z的值
print(plus(1, 2))
结果: 3
上面的plus函数就是一个简单计算两个值相加,当然,我们也可以传入变量
a = 1
b = 2
def plus(x: int, y: int):
z = x + y
return z
print(plus(a, b)) # 传入a、b两个变量的值进去
结果: 3
我们也可以预定参数的默认值,当没有参数传入时,就可以使用默认值进行计算
a = 1
def plus(x: int, y = 2): # 只传入了a,并没有传入第二个参数,所以第二个参数y就使用默认值2
z = x + y
return z
print(plus(a))
结果: 3
函数也可以不用参数和返回值,像下面这样
z = 0
def test():
global z # global全局声明这个z不是局部的z,而是外面全局的那个z,如果函数内部也有一个z,并且想给这个z赋值的话,就可以不用global声明
z = 10
test()
print(z)
结果: 10
我们也可以在一个函数里面调用另外一个函数
def pulse(x, y):
return x + y # 3、计算3 + 12并返回结果
def test():
print(pulse(3, 12)) # 2、在test函数中调用pulse函数,传参为3和12,收到pulse函数返回的结果并显示
test() # 1、首先调用test函数
结果: 15
三、类
1、类的基本使用
是用来描述具有相同的属性和方法的对象的集合,比如公司里的员工,每个员工都有职位,薪资,部门这些共有的属性,我们可以用如下方式定义
class Employee(object):
def __init__(self, name, department, salary): # 一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
self.name = name # 类的函数比普通函数多了一个self,代表当前对象的地址
self.department = department
self.salary = salary
def display_info(self):
print('this employee name is %s, department is %s, salary is %d' % (self.name, self.department, self.salary))
# 创建Employee类的第一个对象
a = Employee('Donnie', 'Develop', 5000)
# 创建Employee类的第二个对象
b = Employee('John', 'Administrator', 3000)
# 两个实例化对象分别调用display_info方法进行打印
a.display_info()
b.display_info()
结果: this employee name is Donnie, department is Develop, salary is 5000
this employee name is John, department is Administrator, salary is 3000
我们定义一个员工的类Employee,类中初始化三个属性,员工的姓名,部门和薪水,类中还有一个方法,这个方法的作用就是打印出当前员工的名字,部门和薪水;然后我们实例化a,b两个对象,这两个对象实例化不同的员工,然后分别打印出来。
也可以添加,删除,修改类的属性
class Employee(object):
def __init__(self, name, department, salary):
self.name = name
self.department = department
self.salary = salary
def display_info(self):
print('this employee name is %s, department is %s, salary is %d' % (self.name, self.department, self.salary))
a = Employee('Donnie', 'Develop', 5000)
b = Employee('John', 'Administrator', 3000)
a.age = 22
print(a.age)
a.age = 23
print(a.age)
del a.age
print(a.age)
结果: 22
23
Traceback (most recent call last):
File "F:/Test/hello.py", line 19, in <module>
print(a.age)
AttributeError: 'Employee' object has no attribute 'age'
可以看到,我们在a实例中增加了一个本来没有的属性age,并赋值22,然后修改他为23,最后再删除掉他,当删除掉age之后,我们最后再打印a.age,程序就会报错
2、类的继承
类的继承,可以实现代码的复用,通过继承创建的类称为子类,被继承的类称为父类,我们来看一个例子
class Dog(object):
def __init__(self):
print('Dog init')
def dog_info(self):
print('This is Dog')
class Kirky(Dog): # 这里写明Kirky类继承Dog类
def __init__(self):
print('Kirky init')
def kirky_info(self):
print('This is Kirky')
d = Kirky()
d.dog_info()
d.kirky_info()
结果: Kirky init
This is Dog
This is Kirky
可以看到,子类可以完全继承父类的方法并进行调用,而且,一个子类可以继承多个父类,我们把上面的程序改写一下,变成下面这样:
class Dog(object):
def __init__(self):
print('Dog init')
def dog_info(self):
print('This is Dog')
class B(object):
def __init__(self):
print('B init')
def b_info(self):
print('This is B')
class Kirky(Dog, B): # Kirky同时继承Dog和B两个类
def __init__(self):
print('Kirky init')
def kirky_info(self):
print('This is Kirky')
d = Kirky()
d.dog_info()
d.kirky_info()
d.b_info()
结果: Kirky init
This is Dog
This is Kirky
This is B
3、方法的重写
有时候父类的方法并不能完全满足子类的需求,那我们可以进行方法的重写,子类可以起一个与父类方法相同名称的方法,然后重新构造里面的功能即可
class Dog(object):
def __init__(self):
print('Dog init')
def dog_info(self):
print('This is Dog')
class Kirky(Dog):
def __init__(self):
print('Kirky init')
def dog_info(self): # 子类重写父类的dog_info方法
print('This is new function')
a = Dog()
a.dog_info()
d = Kirky()
d.dog_info()
结果: Dog init
This is Dog
Kirky init
This is new function
四、总结
我们今天简单概述了方法和类,有了这两天学习的内容,大家已经可以独立写出一些程序了,什么?这两天东西多不好消化?没关系,那明天我们休息一天,把之前学习的,通过一个完整的代码示例呈现给大家,让大家从代码中去消化这两天学习的内容,领略Python的魅力
最后
以上就是甜美乌冬面为你收集整理的Python教程--类和方法一、前言二、方法(函数)三、类四、总结的全部内容,希望文章能够帮你解决Python教程--类和方法一、前言二、方法(函数)三、类四、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复