zoukankan      html  css  js  c++  java
  • 面对对象编程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.只有创建的对象才可以去调用你的普通方法
    '''
  • 相关阅读:
    表单提交方式
    js--dom对象
    js--bom对象
    css布局的漂浮、position定位
    python语法学习第五天--lambda表达式、filter()、map()
    python语法学习第五天--函数(2)
    python3语法学习第五天--函数(1)
    python3语法学习第四天--序列
    leetcode| 84. 柱状图中最大的矩形
    leetcode| 56. 合并区间
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306932.html
Copyright © 2011-2022 走看看