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  # 到这步就报错了
  • 相关阅读:
    ZooKeeper基本原理
    ElasticSearch的基本原理与用法
    Solr与MySQL查询性能对比
    MySQL性能优化总结
    Java并发集合及线程池实现原理
    Java垃圾回收机制
    Java Spring的IoC和AOP的知识点速记
    基于Solr的空间搜索
    系统学习消息队列分享(十) 如何实现高性能的异步网络传输?
    系统学习消息队列分享(九) 如何使用异步设计提升系统性能?
  • 原文地址:https://www.cnblogs.com/chen1930/p/6078954.html
Copyright © 2011-2022 走看看