zoukankan      html  css  js  c++  java
  • 类的成员

    一.成员

    1.类的成员  (函数,变量)

       class Foo 
              #方法

       def __init__(self,name)

        self.name = name    #实例变量字段

       #方法

                def func(self ):
          pass 
    #obj,Foo 类的对像

    #obj.Foo类的实例

    类的成员分三类(在源码里边有,目前用不到)

         变量:

                            实例变量 (字段)

             共有的实列变量(字段)

             私有的实例变量(字段)

                 类变量 (静态字段)  

             共有的实列变量(静态字段)
                          私有的实例变量(静态字段)

     class Foo 
              name = "中国"  #类变量

       def __init__(self,name)

        self.name = name    #实例变量字段

                def func1(self ):

          pass 

       def func2(self):

        pass 

    一般准则:以后对于实例变量(字段),使用对象访问即:obj.name

        类变量(静态字段)访问时,使用类方法.即:Foo.name(实在不行在用对象访问)

    什么时候用类变量呢??

    当所有对象中有公共字段时且

    方法:

        1.实例方法

        2.静态方法

        3.类方法

    ------------------------没必要写实例方法---------------------------------

    class Foo (object)

       def __inint__(self ,name)

        self.name = name

       def func(self):
        print("132")
    obj.Foo()
    obj.func()

    ------------------------有必要写实例方法---------------------------------

    class Foo (object)

       def __inint__(self ,name)

        self.name = name

       def func(self):   #实例方法
        print(self.name)

       @staticmethod    #静态方法    (相当于把他当成函数去用了,反正你也不用,但是在这个类中)

       def sidplay(self):

        print("666")
    obj.Foo()
    obj.func()

    Foo.display()

    如果在方法无需使用对象中封装的值,那么就可以使用静态方法

    总结:

      1.编写时:  方法上方写@staticmethod

              方法参数可有可无

      2.调用时:  类.方法

            对象.方法名

    什么时候用呢??

        无需调用对象中以封装的值时用静态方法

        

    3.类方法 (类似于静态方但在编写时稍有不同,有参数)

    class Foo (object)

       def __inint__(self ,name)

        self.name = name

       @classmethod    #类方法

       def show (cls,x1,x2):

        print(cls,x1,x2)

    #调用

    Foo.show(1,8)

    什么时候用呢??

    调用类中的值的时候,就用这个方法,他会自动的帮你传递

    总结:

      1.定义时:  方法上面写:@classmethod

            方法参数:至少有一个cls参数,你不写pycharm会帮你写上

      2.执行时:  类名.方法名()

          

    强加一个面试题:

    静态方法和类方法还有实例方法的区别?

      答:从三个方面去说,定义,执行时,应用场景

    class Foo(object)
      def __init__(self):

       pass 

      def __display(self,arg):

        print("私有方法",arg)

      def func (self):

      self,__display(132)

    属性  (通过方法改造过来的)

    class Foo(object)
      def __init__(self):

       pass 

      @proeperty    #变成属性

      def start(self):

        return 1

      @property    #变成属性

      def end (self):

        return 10

    obj = Foo()

    print(obj.start)

    print(obj.end) 

    总结:

      1.编写时: 方法上面写上@property

           方法参数:只有一个self

      2.调用时:无需加括号,对象 方法

      3.应用场景:对于简单的方,当无需传参且有返回值的时候

    练习题:

    data_list = []

    for i in range(1,901)

      data_list.append("alex-%s"%i)
    #要查看的页面

    page = int(input("请输入你要查看的页码:"))
    #每页显示10条
    per_page_num = 10

    page_data_list =data_list[0:10] 

    for item in 

     ................

  • 相关阅读:
    opencv.js小项目demo
    face-api.js 前端人脸识别,人脸检测,登录认证
    note.js 引用jQuery,
    note.js使用express创建项目的步骤以及ip和端口配置
    学习kettle遇到的问题
    Linux 后台执行python或者java代码的命令
    kettle入门大数据管理工具
    java保留2位或n位小数
    快速排序基本思想,递归写法,python和java编写快速排序
    学了一天的golang从入门到放弃
  • 原文地址:https://www.cnblogs.com/RootEvils/p/9547481.html
Copyright © 2011-2022 走看看