前言
1 面向对象
构造方法
实例成员
实例变量
实例方法
类成员
类变量
类方法
静态方法
一、静态方法
工具、在类中使用静态方法表示与对象的【归属】关系。
特点:
1、既不访问实例成员,也不访问类成员
2、一般不传递参数(静态方法与类外定义的函数一样)
作用:
归属、工具(方便管理)
场景:
一般用于定义工具函数
在类中的菜单
定义:
class 类名:
@staticmethod
def 静态方法名([参数列表]):
方法体
调用:
类名.静态方法名([参数列表])
说明:
1、使用@staticmethod修饰的目的是了该方法不需要隐式传递参数
2、静态方法不能访问实例成员与类成员
总结:
class 类名:
''' 文档字符串 '''
类变量名 = 值 # 数据共享
def __init__(self, [参数列表]):
''' 多用于初始化实例对象的变量 '''
self.属性名 = 数据
...
def 实例方法名(self, [参数列表]):
''' 实现类的某个功能,操作实例变量 '''
self.实例变量名
...
@classmethod
def 类方法名(cls, [参数列表]):
''' 操作类变量 '''
cls.类变量名
...
@staticmethod
def 静态方法名([参数列表]):
''' 功能归属,方便管理 '''
...
调用:
对象 = 类名([参数列表]) # 根据构造方法中参数传递
对象.实例变量
对象.实例方法
类.类变量
类.类方法
类.静态方法
二、小试牛刀
1.练习
使用面向对象的方式实现提款机存取钱的过程 #
1、选择存取之前打印存取款选项菜单 #
2、在取钱时,如果取款金额大于余额时,提示余额不足 #
3、在存钱时,不能钱数为负值 #
4、每次交易后需要打印:谁取/存了多少钱,账户余额为多少钱? # 5、需要实例化多个对象后都可以对总体银行的钱增多或减少
class ATM:
bank_money = 1000000
def __init__(self, name, money):
self.name = name
self.money = money
@staticmethod
def menu():
print('1 存款')
print('2 取款')
print('0 退出')
def main(self):
while True:
ATM.menu() # 静态方法调用
chioce = input('请输入:')
if chioce not in ['0', '1', '2']:
print('请根据菜单进行选择!!')