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随便用了

  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/fenggf/p/9084115.html
Copyright © 2011-2022 走看看