• 面对对象编程02


    # 补充类方法:
    class Preson():
    __age = 18 # 这是私有的写法,就是为了不把某些东西暴露给外界,外界无法访问和操作

    def show(self):
    print('-------->', Preson.__age)

    @classmethod
    def test(cls):
    cls.__age = 20
    print('------->类方法')

    @classmethod
    def show_age(cls):
    print('修改后的年龄是', cls.__age)

    @staticmethod
    def test1():
    # print(Preson.__age) 这种可以,虽然它没有cls,但是可以写上类名
    # print(self.name) 这种不行,self不能出现
    pass


    # print(Preson.__age) #这样写的话 会有阴影,因为已经被私有了起来了
    # 这边有一个问题就是必须要使用类方法才会改,因为类方法不同于__init__,它需要一个启动
    Preson.test()
    Preson.show_age()

    # -------------------------------------------------------------------------------
    '''
    静态方法:很类似类方法,依赖装饰器
    1.装饰器 @staticmethod
    @staticmethod
    def test1(): 并没有参数
    pass
    2.它依赖于类名 和classmethod的区别就是没有cls,然后装饰器的名字不一样
    3.无需带任何参数的(self,cls)
    4.它的里面也只能访问类的属性和方法,对象的是不行的,无法访问的
    5.同类方法,在创建class类的时候,它就会生成了。创建时机和类是一样的


    总结类方法和静态方法:
    不同之处:
    1.装饰器的名字不同 @classmethod @staticmethod
    2.参数不一样,类方法有参数的,静态方法是没参数的
    相同之出:
    1.只能访问类的方法和属性
    2.都可以在没有创建对象之前进行使用
    3.都可以通过类名进行调用,但是@classmethod 可以用cls来调用

    普通方法:
    1.没有装饰器
    2.永远要依赖于对象,也就是说它的创建的时间是在有对象之后才会产生的
    3.只有创建的对象才可以去调用你的普通方法
    '''
  • 相关阅读:
    [HNOI2009]梦幻布丁(链表+启发式合并)
    [HNOI2004]宠物收养场(Treap)
    【模板】Treap
    Monkey King(左偏树)
    【模板】左偏树
    数列分段Section II(二分)
    [HAOI2006]受欢迎的牛(tarjan缩点)
    【模板】树链剖分
    精美产品策划类企业织梦模板
    简洁的支持展开关闭的tab标签代码
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306932.html
Copyright © 2020-2023  润新知