美文网首页
#python入门11#面向对象编程

#python入门11#面向对象编程

作者: MORESIR | 来源:发表于2016-12-01 22:14 被阅读12次

    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

    类的定义:

    #!/usr/bin/env python3
    #! -*- coding:utf-8 _*_
    
    class Student(object):
        def __init__(self, name, socre):
            self.name = name
            self.socre = socre
    
        def print_score(self):
            print('%s:%s' % (self.name, self.socre))
    
    jum = Student('jum', 100)
    jum.print_score()
    

    class后面紧接着是类名,即 **Student **,类名通常是大写开头的单词,紧接着 (object) ,表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

    注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

    有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:

    和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。

    • 私有属性:
      如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,

    注意:

    1. 在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量。
    2. 有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
      3.** 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name**来访问__name变量
    >>>bart._Student__name
    'bart Simpson'
    

    但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把__name改成不同的变量名。总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉。

    学习来源于廖雪峰教程

    相关文章

      网友评论

          本文标题:#python入门11#面向对象编程

          本文链接:https://www.haomeiwen.com/subject/eretmttx.html