标签:elf 方便 数据 sim 定义数据 并且 __init__ 初始化 ror
先前看了基本的数据结构,现在看一下类的方法,在Python中延续其简洁性的特点,基本的定义类的方法如下代码
class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print ‘%s: %s‘ % (self.name, self.score)
可以看到,这里面student定义了一个学生类,在这个类里面,有两个数据name scorce。
在定义类的时候__init__是一个初始化的函数,他的第一个参数self是一个Python形式的参数,表示创建实例的本身,比如要创建一个student :jack 此时self即为jack。
在student的类里面定义了一个打印分数的方法print_score(),这个方法用来操作实例的数据(打印)。这就是数据的类内方法操作,而不是再单独的在类外写一个函数方法来打印类内的数据
在上面的代码中self.name=name self.score=score 两个方法分别定义了student定义了两个数据类型,所以可以直接传数据来给出两个参数的数值例如:
>>> bart = Student(‘Bart Simpson‘, 59) >>> bart.name ‘Bart Simpson‘ >>> bart.score 59
这里面可以看到我们直接使用了传数据的方法给类内的变量赋值,这样的话会造成数据修改很轻易完成,数据健壮性不够(类似搭积木,什么东西都可以操作每一块积木,那么很容易因为移除或摆放不正确导致整个积木垮塌),此时应该使用类内的方法来给变量赋值,并且将类的变量变成私有变量,这样就可以方便的使用类内的方法定义数据,例如
class Student(object): def __init__(self, name, score): self.__name = name#前双下划线即为定义私有变量 self.__score = score def print_score(self): print ‘%s: %s‘ % (self.__name, self.__score) def get_name(self):#这里定义在类外取得数据的方法get return self.__name def get_score(self): return self.__score def set_score(self, score):#这里定义设置数据的方法 if 0 <= score <= 100:#在这里添加了一个检验的步骤确保传入的参数符合要求,这也是类内私有变量的优势所在:确保传入的数据的规范性 self.__score = score else: raise ValueError(‘bad score‘)
以上代码中加入了打印方法,得到数据方法,设置数据方法,这些方法统统放在类的内部,实现私有数据的保护和使用,这样就类似于我们搭积木的时候使用一只更稳健的手,我们通过自己会晃动的手操作这个稳定的手,这样就会排除自己以为晃动自己的手造成,积木块掉落,确保他的稳定性。
以上代码均引用廖雪峰老师的网站http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 2.7旧版教程。
标签:elf 方便 数据 sim 定义数据 并且 __init__ 初始化 ror
原文地址:http://www.cnblogs.com/bybabo/p/6196547.html