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

    静态方法

    静态方法相当于函数,可以不创建对象直接引用

    如果在类里面用静态方法,相当于函数,可以不创建对象,直接是用类里面的方法,你就当它是函数。

    静态方法名义上归类管理,实际上静态方法访问不了类或实例种的任何属性

    静态方法属于类

    class Foo:
        def __init__(self):
            pass
    
        @staticmethod
        def func(): # 去掉self
            print('我是静态方法')
    
    Foo.func()

    类方法

    1、类方法只能访问类变量,不能访问实例变量

    2、类方法至少要有一个参数,cls

    3、类方法是用类进行调用

    class Foo:
        @classmethod
        def f1(cls):
            print(cls)
    
    Foo.f1()

    属性方法

    1、把一个类里面的方法,变化成字段

    class Foo:
        def __init__(self, name):
            self.name = name
    
        @property
        def fun(self):
            print('%s是做属性例子' % self.name)
    
    
    f = Foo('tom')
    f.fun #调用时候去掉括号

    2、由于调用时候没有括号,那就不能在有参数的方法进行设置

    3、属性赋值

    class Foo:
        def __init__(self, name):
            self.name = name
            self.value = None
    
        @property
        def fun(self):
            print('%s是做属性例子' % self.value)
    
        @fun.setter
        def fun(self, value):  # 名字必须一致,位置必须在后边
            self.value = value
    
    f = Foo('tom')
    f.fun
    f.fun = 'ccccc'
    f.fun

    4、删除

    class Foo:
        def __init__(self, name):
            self.name = name
            self.value = None
    
        @property
        def fun(self):
            print('%s是做属性例子' % self.value)
    
        @fun.setter
        def fun(self, value):  # 名字必须一致,位置必须在后边
            self.value = value
    
        @fun.deleter # 删除
        def fun(self):
            del self.value
            print('del')
    
    
    f = Foo('tom')
    f.fun
    f.fun = 'ccccc'
    f.fun
    del f.fun
    f.fun  # 到这步就报错了
  • 相关阅读:
    PHP里json_encode()与json_decod()区别
    数组进行排序
    tp5利用自带上传类实现单个文件与多文件上传
    mkdir() Permission denied 报错问题
    如何快速熟悉新项目的代码?
    Tp5自定义路径写入日志
    spring解决循环依赖
    spring注解的使用
    ssm的整合
    编程知识总结
  • 原文地址:https://www.cnblogs.com/chen1930/p/6078954.html
Copyright © 2011-2022 走看看