首页 > 代码库 > 学习python

学习python

先前看了基本的数据结构,现在看一下类的方法,在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旧版教程。

 

学习python