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

      Python从设计之初就已经是一门面向对象的语言

      Python类:

        1)类定义:

    class 类名:
    def __init__(self, 参数, ...): # 构造函数,只在生成类的实例时被调用一次
    ...
    def 方法名1(self, 参数, ...): # 方法1,方法的第一个参数是self,表示自身的实例
    ...
    def 方法名2(self, 参数, ...): # 方法2
    ...

          实例化类:ClassName()

          类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性

          类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用

        2)类实例方法

          在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例,代表当前对象的地址,而self.class则指向类。

        3)继承

          子类的定义语法如下:

    class sonClassName(fatherClassName1,fatherClassName2,fatherClassName3):
        <statement-1>
        .
        .
        .
        <statement-N>

        子类会继承父类的属性和方法

      4)类的私有属性

        __ filed:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用self.__field访问。

      5)类的私有方法

        __method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类的外部调用。调用方式self.__method。

    #!/usr/bin/python3
     
    #类定义
    class people:
        #定义基本属性
        name = ''
        age = 0
        #定义私有属性,私有属性在类外部无法直接进行访问
        __weight = 0
        #定义构造方法
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("%s 说: 我 %d 岁。" %(self.name,self.age))
     
    # 实例化类
    p = people('runoob',10,30)
    p.speak()

      6)类静态方法和类方法

        一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。

        而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用

    class A(object):
      # 静态方法,既可以作为类的方法使用,也可以作为类的实例的方法使用
        @staticmethod
        def foo1(name):
            print 'hello', name
      # 类的实例方法
        def foo2(self, name):
            print 'hello', name
      # 类方法,cls作为第一个参数用来表示类本身. 在类方法中用到,类方法是只与类本身有关而与实例无关的方法,既可以作为类的方法使用,也可以作为类的实例的方法使用
        @classmethod
        def foo3(cls, name):
            print 'hello', name)

        Python静态方法和类方法的区别:

          静态方法:使用@staticmethod注解修饰,不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样;如果在静态方法中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名

          类方法:使用@classmethod注解修饰,也不需要self参数,但第一个参数需要是表示自身类的cls参数;因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码

      self和cls的区别:

         self 作为实例方法的第一个参数,表示当前类的实例

         cls 作为类方法的第一个参数,表示当前类

    END.

  • 相关阅读:
    intel cpu 架构
    nginx-nagios-pnp4nagios-nrpe安装配置过程
    iostat 命令detail
    nagios环境
    编译安装PHP 5.3.13
    nagios支持PNP图形显示
    nagios配置安装
    在xp下禁用media sense
    linux awk常用命令【转载】
    sed命令解析[转载]
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/15786465.html
Copyright © 2011-2022 走看看