zoukankan      html  css  js  c++  java
  • python 类以及单例模式

    python 也有面向对象的思想,则一切皆对象

    python 中定义一个类:

       class student:

            count = 0

            books = []

            def __init__(self,name,grade)

                self.name=name

                self.grade=grade

          def ex(self):

              if self.grade=='1':

                   print 'aaa'

             else:

                   print 'ccc'

    定义的类中,self 就相当于java中的this,相当于于实例本身

    在python类中 通过”_”和”__”实现的访问控制 

    数据属性

    在上面的Student类中,”count””books””name”和”age”都被称为类的数据属性,但是它们又分为类数据属性和实例数据属性

    “_”:以单下划线开头的表示的是protected类型的变量,即只能允许其本身与子类进行访问;同时表示弱内部变量标示,如,当使用”from moduleNmae import *”时,不会将以一个下划线开头的对象引入。
    “__”:双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了,连子类也不可以,这类属性在运行时属性名会加上单下划线和类名。

    继承:

    在python中既支持单继承又支持多继承

    python中类  __new__()是一个静态方法,类先调用完__new__()方法生成一个cls实例,然后才调用__init__()

    python中单例实现:

    class Singleton(object):
        _instance=None
        def __new__(cls,*args,**kwargs):
            if not cls._instance:
                cls._instance= super(Singleton,cls).__new__(cls) 
            return cls._instance
    class Single(object):
        _instance={}
        def __new__(cls):
            if not cls._instance.has_key[cls]:
                cls._instance[cls]=object.__new__(cls)
            return cls._instance[cls]
  • 相关阅读:
    [luoguP3953] 逛公园(DP + spfa)
    [luoguP3960] 列队(动态开点线段树)
    [luoguP2325] [SCOI2005]王室联邦(树分块乱搞)
    [luoguP1053] 篝火晚会(贪心 + 乱搞)
    Linux_C socket 一些知识
    Linux_C socket 服务器(cat ,execl功能)
    Linux_C socket server.c clinet.c功能分开写
    Linux_C socket clinet.c
    Linux_C AF_INET和PF_INET的细微不同
    Linux_socket一些基本函数和结构体
  • 原文地址:https://www.cnblogs.com/NancyStartOnce/p/5588228.html
Copyright © 2011-2022 走看看