python的实例和类,与记录和程序扮演着类似的角色。
创建一个MyPerson类,用于记录和处理人员信息。
步骤 | 操作 | 描述 |
---|---|---|
1 | 定义MyPerson类 | class语句定义类 |
2 | 记录人员信息 | 构造函数记录人员信息 |
3 | 处理人员信息 | 类方法处理人员信息 |
4 | 打印人员信息 | 重载__str__()方法 |
python约定俗成的惯例。
NO | 类型 | 描述 |
---|---|---|
1 | 模块名 | 以小写字母开头 |
2 | 类名 | 以大写字母开头 |
3 | 类方法 | 第1个入参为self |
通常把有一致用途的代码编写在相同的模块。
创建一个myperson模块myperson.py文件,用于存放MyPerson类的代码。
定义MyPerson类,包括的人员信息:姓名,工作,工资。
(1)人员信息,用实例对象属性记录。
(2)实例对象数据属性,通过在__init__()构造方法中给self属性赋值来生成。
(3)self自动指向当前调用方法的实例对象。
(4)每次创建实例对象会自动调用__init__()构造方法。
(5)每个实例对象对应一条人员记录。
# E:\documents\F盘\myperson.py
class MyPerson:
def __init__(self,name,job = None,pay = 0):
self.name = name
self.job = job
self.pay = pay
if __name__ == '__main__':
mp1 = MyPerson('mp1')
mp2 = MyPerson('mp2','c++开发',20000)
print('mp1:name={0.name},job={0.job},pay={0.pay}'.format(mp1))
print('mp2:name={0.name},job={0.job},pay={0.pay}'.format(mp2))
# 打开cmd,执行下面示例
E:\documents\F盘>python myperson.py
mp1:name=mp1,job=None,pay=0
mp2:name=mp2,job=c++开发,pay=20000
(1)实例对象的行为属性,用于处理人员信息。
(2)实例行为属性,通过类方法来定义。
所以,通过类方法来处理人员信息。
class MyPerson:
def __init__(self,name,job = None,pay = 0):
self.name = name
self.job = job
self.pay = pay
def payraise(self,rate):
self.pay = int(self.pay * (1 + rate))
if __name__ == '__main__':
mp1 = MyPerson('mp1')
mp2 = MyPerson('mp2','c++开发',20000)
print('mp1:name={0.name},job={0.job},pay={0.pay}'.format(mp1))
print('mp2:name={0.name},job={0.job},pay={0.pay}'.format(mp2))
mp2.payraise(0.1)
print('mp2:name={0.name},job={0.job},pay={0.pay}'.format(mp2))
# 打开cmd,执行下面示例
E:\documents\F盘>python myperson.py
mp1:name=mp1,job=None,pay=0
mp2:name=mp2,job=c++开发,pay=20000
mp2:name=mp2,job=c++开发,pay=22000
python通过重载__str__()方法,让打印自动显示__str__()返回的字符串。
重载__str__(),让显示更友好,更有意义。
class MyPerson:
def __init__(self,name,job = None,pay = 0):
self.name = name
self.job = job
self.pay = pay
def payraise(self,rate):
self.pay = int(self.pay * (1 + rate))
def __str__(self):
return 'MyPerson:name={0.name},job={0.job},pay={0.pay}'.format(self)
if __name__ == '__main__':
mp1 = MyPerson('mp1')
mp2 = MyPerson('mp2','c++开发',20000)
print(mp1)
print(mp2)
mp2.payraise(0.1)
print(mp2)
# 打开cmd,执行下面示例
E:\documents\F盘>python myperson.py
MyPerson:name=mp1,job=None,pay=0
MyPerson:name=mp2,job=c++开发,pay=20000
MyPerson:name=mp2,job=c++开发,pay=22000