zoukankan      html  css  js  c++  java
  • python 类

    类定义使用class 关键字

    class 类名(父类可有多个 支持多继承):

      属性(和java一样)

      实例方法

      def __init__(self,属性):

        self.属性 = 属性

    class myclass(object):
        name = ""
        id = ""
        def __init__(self,name):
            self.name=name
        def __init__(self,name,id):
            self.name = name
            self.id = id
    
        def __str__(self):
            print(self.name+str(self.id))
            return super.__str__(self)
    
    无法支持重载
    c1 = myclass('a',55)
    c2 = myclass('b')
    print(c1)
    print(c2)
    

      可以依靠默认参数

    class myclass(object):
        name = ""
        id = ""
        def __init__(self,name,id=18):
            self.name = name
            self.id = id
    
        def __str__(self):
            print(self.name+str(self.id))
            return super.__str__(self)
    
    
    c1 = myclass('a',55)
    c2 = myclass('b')
    print(c1)
    print(c2)
    

      属性的增删改查

    查 实例类名.属性

    c1.name

    增加 实例类名.属性 = 

    c1.age = 18

    删除 del实例类名.属性

    del(c1.age)

    c1.name = "asdasd"

    python 之中也可以隐藏属性  属性名字前加入__

    class myclass(object):
        name = ""
        id = ""
        def __init__(self,name,id=18):
            self.name = name
            self.id = id
            self.__hide = 2
    
        def __str__(self):
            print(self.name+str(self.id))
            return super.__str__(self)
    c1 = myclass('a',55)
    #无法直接调用
    print(c1.__hide)
    #类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类__dict__里的
    print(c1.__dict__)
    #{'name': 'a', 'id': 55, '_myclass__hide': 2}   属性被改名了
    #查看隐藏属性
    print(c1._myclass__hide)
    

      

    一般会将一些私有属性(不希望被外部访问的属性)以_开头 但还是能访问 只是代表不要直接访问

    @property
    可以将方法变成属性
    @property
        def print(self):
            return "%s-%s"%(self.name,self.id)
    
        @property
        def print2(self):
            print("%s-%s"%(self.name,self.id))
    

      结果

    b-18
    b-18
    None

     @classmethod

    和实例无关系      只是和类有关系

    class myclass():
        static = "static"
        @classmethod
        def print_static(cls):
            print(cls.static)
    
    
    myclass.print_static()
    

      @staticmethod

    静态方法        跟java的static void 方法一样 更类的属性无关    就像定义了一个函数         静态方法和静态变量会先进入内存 在内存中独立的一片内存当中进行保存 就是先人     但是实例化后的对象就是后人 后人能使用前人的属性和方法 但是前人却不知道后人的存在 自然也无法使用对象的变量和对象的方法

    class myclass():
        static = "static"
        @classmethod
        def print_static(cls):
            print(cls.static)
        @staticmethod
        def myclassStaticMethod(a,b):
            print(a+b)
    
    
    myclass.print_static()
    myclass.myclassStaticMethod(1,2)
    

      

  • 相关阅读:
    什么是JAVA内容仓库(Java Content Repository)(3)
    Documentum 中 Type定义与存储
    洛谷 P1421 小玉买文具
    校内 第一届ACM校赛——热身赛
    洛谷 P1307 数字反转
    洛谷P1579 哥德巴赫猜想(升级版)
    51单片机 第三节 独立按键
    51单片机 第四节 数码管
    校内 第一届ACM校赛——正赛
    51单片机 第二节 点亮LED
  • 原文地址:https://www.cnblogs.com/hywhyme/p/11644848.html
Copyright © 2011-2022 走看看