zoukankan      html  css  js  c++  java
  • Python3学习笔记-实例变量、实例方法、类变量、类方法、属性方法、静态方法

    实例变量/成员变量:在类的声明中,属性是用变量来表示的

    实例方法:在类中声明的方法,例如:my(self),必须实例化之后才可以使用,否则会报错

    类变量:公共的变量,每个实例都可以用。

    类方法: @classmethod

      1、不用实例化就可以直接调用。

      2、它可以通过cls使用类变量

      3、它不能调用这个类里面的其他实例方法和实例变量

      4、不想实例化的时候,就可以定义成类方法

    属性方法(self):@property

       @property ,这是个装饰器,把函数变成一个属性方法,如果这个方法没有入参的话,那就可以变成一个属性方法。

      看起来像属性的一个方法,将没有入参的函数变为一个属性方法(类似于变量),结果是函数的返回值

      在使用的时候可以如下面代码所示的 feng.simle, 而不是像其他的方法一样加(), 如 feng.simle()

    class Person:
    
        @property #属性方法
        def smile(self):
            return 'haha'
    
    feng = Person()
    print(feng.smile)#属性方法像属性一样调用 # print(feng.smile())#报错,调用属性方法不用加括号

    静态方法:@staticmethod

      你不想实例化的时候,就可以定义成类方法

      静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量、类方法、实例变量、实例方法

    下面从实例中了解这几个知识点的具体用法,代码如下:

    class Baby():
        country = 'China' #类变量,公共的变量,每个实例都可以用
        def __init__(self,name):   #带了self的都是实例方法,必须实例化了之后才能调用,否则会报错
            self.name = name  #实例变量,也叫成员变量
            print('self的内存地址',id(self))
        def cry(self):           #实例方法
            print('哇哇哇')
    
        @property   #这是一个装饰器,也叫属性方法,hhh函数就不能传参数了。如果函数没有入参就可以写property,调用的时候不能加括号了。
        def hhh(self):
            return 198
    # b = Baby('a')
    # print(b.hhh)       #调用的时候不能加括号,看起来像属性的一个方法。
    
        @classmethod           #类方法
        def xm(cls):           #cls代表的就是baby
            print(cls.country)
            print('我是类方法')
            # print(cls.name)  #cls不能调用实例变量,会报错
            # cls.cry()        #cls不能调用实例方法,会报错
    
        @staticmethod        #静态方法
        def xh():
            print('这个是静态方法,它和一个没写在类里面的函数一样')
    class Baby():
        country = 'China' #类变量,公共的变量,每个实例都可以用
        def __init__(self,name):   #带了self的都是实例方法,必须实例化了之后才能调用,否则会报错
            self.name = name  #实例变量,也叫成员变量
            print('self的内存地址',id(self))
        def cry(self):           #实例方法
            print('哇哇哇')
    
        @property   #这是一个装饰器,也叫属性方法,hhh函数就不能传参数了。如果函数没有入参就可以写property,调用的时候不能加括号了。
        def hhh(self):
            return 198
    # b = Baby('a')
    # print(b.hhh)       #调用的时候不能加括号,看起来像属性的一个方法。
    
        @classmethod           #类方法
        def xm(cls):           #cls代表的就是baby
            print(cls.country)
            print('我是类方法')
            # print(cls.name)  #cls不能调用实例变量,会报错
            # cls.cry()        #cls不能调用实例方法,会报错
    
        @staticmethod        #静态方法
        def xh():
            print('这个是静态方法,它和一个没写在类里面的函数一样')
    
    # '''调用静态方法'''
    Baby.xh()
    
    # '''调用类变量'''
    Baby.country='USA'   #类变量是可以直接通过类名.xxx来进行修改的。
    
    fgf = Baby('fengfeng')
    fgf.country = 'UK'     #不会改变类变量的值,只是改变了fgf这个实例中country的值
    print(fgf.country)
    wz = Baby('wuzhen')
    wz.country = 'AUS'
    print(wz.country)
    
    # '''装饰器,属性方法'''
    b = Baby('baby')
    print(b.hhh)    #调用时直接对象.函数名,不需要加括号,看起来像属性的方法
    
    # '''self'''
    wz = Baby('wuzhn')
    print('wuzhen的内存地址',id(wz)) #与实例化时self的内存地址一致
    fgf = Baby('fengfeng')
    print('fengfeng的内存',id(fgf)) #与实例化时self的内存地址一致

    本类对象:self

      类中的self代表的是本类对象。即self代表的是实例化之后的对象。

      因为函数里面的变量都是局部变量,出了函数就不能用了。用self给对象绑定了之后,就可以在类中self.xx随便用了

  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/fenggf/p/9084115.html
Copyright © 2011-2022 走看看