• python


    静态属性:

    #静态属性 = 数据属性 (@property)
    class mianji():
        def __init__(self,x,y):
            self.x = x
            self.y = y
    
        #类的函数方法:
        def mj(self):
            z = self.x * self.y
            return z
    
        #类的函数方法+@property
        @property
        def mj2(self):
            z = self.x * self.y
            return z
    
    abc = mianji(10,10)
    print("类的属性",abc.x)
    print('这是mj第一个输出:',abc.mj)
    print('这是mj第二个输出:',abc.mj())
    print("*"*10)
    print('这是mj2第一个输出:',abc.mj2)
    print('这是mj2第二个输出:',abc.mj2())
    
    # @在一个函数前加了 @property 后,被修饰的函数转为了类的一个属性,
    # 所以在调用的时候不要加括号了.

    类方法:

    #类方法 (@classmethod)
    class leifangfa():
        name = 'AA'
        def __init__(self,name):
            self.name = name
    
        #未修饰的类函数方法
        def ff(self):
            print(self.name)
    
        #修饰的类函数方法
        @classmethod
        def ff2(cls):
            print(cls.name)
    
    #当类调用自己的方法时,会报错(需要传递self参数)
    # leifangfa.ff()
    #那怎么样类能够调用自己的方法而不报错呢?
    leifangfa.ff2()
    
    #当然实例化后,实例调用这个修饰的函数方法时也只跟类方法有关,跟实例无关
    abc = leifangfa("anec")
    #实例调用类的方法
    abc.ff2()

    静态方法:

    #静态方法(staticmethod)
    #名义上归属类管理,不能使用类变量和实例变量,是类的工具包
    
    class jingtaifangfa():
        x = 1
        def __init__(self,name):
            self.name = name
    
        @staticmethod
        def jtff(x,y):
            z = x * y
            return z
    
    #类调用静态方法:
    print(jingtaifangfa.jtff(2, 2))
    
    #实例调用静态方法:
    abc = jingtaifangfa("anec")
    print(abc.jtff(2, 2))
    
    #静态方法相当于剥离与类属性、方法的绑定,单独可以被类和实例调用.
    
    # 拓展:
    #当类方法不被修饰为静态方法时:
    class jingtaifangfa():
        x = 1
        def __init__(self,name):
            self.name = name
    
        def jtff(x,y):
            z = x * y
            return z
    
    #类能调用这个函数方法:
    print(jingtaifangfa.jtff(2, 2))
    
    #实例是不能调用这个函数方法的
    abc = jingtaifangfa("anec")
    print(abc.jtff(2, 2))
  • 相关阅读:
    Video视频播放中断问题排查记录
    下一站:手机安全
    数据之美 之一
    数据之美 之二
    数据之美 之三
    Groovy入门
    Java8新特性(Lambda表达式、Stream流、Optional类)等
    websocket和ajax的区别(和http的区别)
    java泛型<? extends E>和<? super E>的区别和适用场景
    JAVA反射
  • 原文地址:https://www.cnblogs.com/Anec/p/9763084.html
Copyright © 2020-2023  润新知