zoukankan      html  css  js  c++  java
  • Python面向对象编程

    面向对象最重要的概念就是类(Class)和实例(Instance),Java比较熟了,下面贴代码注释

    class Student(object):
    
        def __init__(self, name, score):
            self.name = name
            self.score = score
    ----------------------------------------------------
    1、class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的
    2、类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:
    3、 注意:特殊方法“__init__”前后分别有两个下划线!!!
    4、注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
    5、类中定义的函数和普通函数定义一样,def 定义 , 不过注意的是类中定义的函数的第一个参数必须为self,并且,调用时,不用传递该参数
    有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去: 示例:
    >>> 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 get_grade(self):
            if self.score >= 90:
                return 'A'
            elif self.score >= 60:
                return 'B'
            else:
                return 'C'
    
    
    
    ---------------------------------------------
    
    
    lisa = Student('Lisa', 99)
    bart = Student('Bart', 59)
    print(lisa.name, lisa.get_grade())
    print(bart.name, bart.get_grade())


    >>>

    Lisa A
    Bart C

    
    

    -------------------------------------------------------------------------------------------------------------------------------------------

    类变量的访问限制:

    类似于Java , 发现4个变量 都设置为了private修饰符,而且对四个变量都进行了get和set操作,在之后对这个类的对象进行属性操作的时候都用getX和setX方法处理。

    public class WorkDayState {
        private int state;          //工作状态   1、有方案  2.无方案
        private int day ;           //日期
        private int month;          //属于的月份
        private int year;           //属于的年份
    
        public WorkDayState(int year, int month, int day, int state) {
            this.year = year;
            this.month = month;
            this.day = day;
            this.state = state;
        }
    
        public int getState() {
            return state;
        }
    
        public void setState(int state) {
            this.state = state;
        }
    
        public int getDay() {
            return day;
        }
    
        public void setDay(int day) {
            this.day = day;
        }
    
        public int getMonth() {
            return month;
        }
    
        public void setMonth(int month) {
            this.month = month;
        }
    
        public int getYear() {
            return year;
        }
    
        public void setYear(int year) {
            this.year = year;
        }
    
    }

    从最开始的类的定义可以看到Python没有private 私有访问修饰符这种操作,要做到同样的效果 ,代码应该如下写法:

    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):
            return self.__name
    
        def get_score(self):
            return self.__score
    
        def set_score(self, score):
            self.__score = score
    
    -----------------------------------------------------
    以上对name和score变量进行了前面加了连个下划线__操作,
    
    在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
    
    如果想访问私有变量,也不能直接对象.属性调用了,如上加了几个get 和 set方法
    
    使用如下:
    >>> bart = Student('Bart Simpson', 59)
    >>> bart.get_name()
    'Bart Simpson'
    
    即可获取变量的值了

    -------------------------------------------------------------------------------------------------------------------------------------------

    继承和多态

    看了看,和Java没多大区别,不再记录了 

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/xqxacm/p/9812114.html
Copyright © 2011-2022 走看看