python面向对象的编程

来源:互联网 发布:淘宝自己的评论看不见 编辑:程序博客网 时间:2024/05/18 09:08

1.python中所有的类均继承自object,定义一个类

class Student(object):#括号中的内容是指父类,默认情况下为object

实例化:

bart = Student()

2.类可以起到模板的作用,所以可以在实例化的时候绑定一些属性,通过定义一个特殊的init方法,在创建实例的时候,就把name,score等属性绑上去:

class Student(object):#self表示创建实例本身,有了__init__方法创建实例时不能用空的参数,self不用传    def __init__(self, name, score):        self.name = name

3.除了有一个self之外,init 和普通函数没有区别
4.封装的另一个好处是给类添加方法很方便。
5.对于内部变量如果不想被修改:

class Student(object):    def __init__(self, name, score):        self.__name = name#这种情况下实例变量不能被修改,切无法外部通过实例访问,private变量        self.__score = score    def print_score(self):        print '%s: %s' % (self.__name, self.__score)    def get_name(self):#通过这种方法可以获得其值        return self.__name    def get_score(self):        return self.__score     def set_score(self, score):#通过这种方法改变其值        self.__score = score

对于以上代码的一点说明:
  1)_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
  2)双下划线开头的实例变量不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量.(不同版本的python会不同)
  3)变量名类似xxx的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用namescore这样的变量名。

6.获取类型的方法是,自己创建的类也可以用这种方法:

>>> type(123)<type 'int'>>>> type('str')<type 'str'>>>> type(None)<type 'NoneType'>

和type()类似的isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上。
7.获得一个对象的所有属性和方法的方法为dir()。

原创粉丝点击