首页 > 代码库 > class随笔(三)
class随笔(三)
编写并改进类
目标:编写两个类,Person--(创建并处理关于人员信息的一个类)和Manage--(一个定制的Person,修改了继承的行为)
步骤1:创建实例,模块使用小写字母开头,类名使用大写字母开头。
# Add record field initialization class Person: def __init__(self, name, job, pay): # 构造函数拥有三个参数 self.name = name # 创建构造函数时填入各个参数 self.job = job # self是新的实际对象 self.pay = pay
有关Person类的第一件事情就是记录关于人员的基本信息,在python中,这叫做实例对象属性(name, job, pay),通常通过给类方法函数中的self属性赋值来创建。
赋给实例属性第一个值的通常方法是在__init__构造函数方法中将它们赋给self,构造函数方法包含了每次创建一个实例的时候python自动运行的代码。
self为新创建的实例对象,而name, job, pay变成了状态信息,即保存在对象中供随后使用的描述性数据。
虽然此处,参数名出现了两次(self.name = name),但实际上,name参数在__init__中是一个本地变量,但self.name是实例的一个属性,它暗示了方法调用的内容。通过self.name = name把本地的name赋给了self.name属性。
当产生一个实例的时候,会自动调用__init__构造函数,并且此函数会有特殊的第一个参数self。可以为它的参数提供默认值。(根据python语法规则,一个函数定义中,在第一个拥有默认值的参数之后的任何参数,都必须拥有默认值)
# Add defaults for constructor arguments class Person: def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay
在添加更多功能之前,先来测试目前的代码:生成类的几个实例,并且显示构造函数所创建的它们的属性。
# Add incremental self-test code class Person: def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay bob = Person(‘Bob Smith‘) sue = Person(‘Sue Jones‘, job=‘dev‘, pay=10000) # 自动运行__init__函数 print(bob.name, bob.pay) # 获取相关的属性 print(sue.name, sue.pay)
上述代码会打印:
Bob Smith 0
Sue Jones 10000
此处的bob对象针对job和pay接受了默认值,但sue显式地提供了值。类的每一个实例都有自己的一组self属性,类充当对象工厂。
class随笔(三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。