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

    classmethod 和staticmethod的区别

    classmethod:我们把它叫做类方法

    staticmethod:我们把它叫做静态方法

    在python中,静态方法和类方法都是可以通过类对象和类对象实例访问,但是区别是:

    1.@classmethod:是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的叫作实例方法,类方法的参数是cls,而实例方法的参数是self,它表示该类的一个实例

    2.普通对象方法至少需要一个self参数,表示类对象实例

    3.类方法有类变量cls传入从而可以用cls做一些相关的处理,并且有子类继承是,调用该类方法时,传入的类变量cls是子类而非父类 对于类方法,可以通过类来调用,就像C.f(),有点类似C++中的静态方法, 也可以通过类的一个实例来调用,就像C().f(),这里C(),写成这样之后它就是类的一个实例了。 

    4.静态方法则没有,它基本上跟一个全局函数相同,一般来说用的很少

    isinstance和issubclass:

    我的理解是,isinstance是检查,对象是不是类的对象的

    issubclass是检查,子类是不是父类的子类

    同志们重点来了啊

    反射:反射就是指程序可以访问,检测和修改它本身状态或行为的一种能力

    python面向对象中的反射,通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

    在这里有两个非常重要的方法:

    hasattr

    getatter

    我的理解是是这样的,有什么不对的希望大家指出,就是说hasattr就是一个检查的作用,就是检查是否含有某属性,它会返回一个布尔值,而getattr是获取这个属性的,类方法输出的时候在后面直接加()就搞定了,它们可以运用到类,对象,模块中(在模块中分内模块和外模块的)

    在这里还有一个setattr和delattr,做于了解

    class Foo:
        f = '类的静态变量'
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def say_hi(self):
            print('hi,%s'%self.name)
    
    obj=Foo('egon',73)
    
    #检测是否含有某属性
    print(hasattr(obj,'name'))
    print(hasattr(obj,'say_hi'))
    
    #获取属性
    n=getattr(obj,'name')
    print(n)
    func=getattr(obj,'say_hi')
    func()
    
    print(getattr(obj,'aaaaaaaa','不存在啊')) #报错
    
    #设置属性
    setattr(obj,'sb',True)
    setattr(obj,'show_name',lambda self:self.name+'sb')
    print(obj.__dict__)
    print(obj.show_name(obj))
    
    #删除属性
    delattr(obj,'age')
    delattr(obj,'show_name')
    delattr(obj,'show_name111')#不存在,则报错
    
    print(obj.__dict__)
    洋洋人生如戏一场,芸芸众生各属一角。此戏说长便长,论时百年;说长便短,稍纵即逝。生命沧海一粟,在万物中脆弱瞬间即逝为最,随风而来,随风为土,虽说百年,亦不过宇宙间流星划过夜空,一闪而过,无迹无痕,虽曾有闪烁,但即刻消失的无影无踪。无论此戏是悲是喜。 人生轻松无极限,生活快乐遂心愿,活的好过的开心,心态代表一个人的精神状态,只要有良好的心态,你才能每天保持饱满的心情。心态好,运气就好。精神打起来,好运自然来。记住做任何事情一定要有积极的心态,一旦失去他,就跳出去,要学会调整心态, 有良好的心态工作。 人生过的是心情,生活活的是心态,人生随其然,生活何其烦,累了就睡觉,醒了就微笑,走过一些路,才知道辛苦;登过一些山,才知道艰难;趟过一些河,才知道跋涉;跨过一些坎,才知道超越;经过一些事,才知道经验;阅过一些人,才知道历练;读过一些书,才知道财富。
  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/liuchengdong/p/7375514.html
Copyright © 2011-2022 走看看