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.只有创建的对象才可以去调用你的普通方法
    '''
  • 相关阅读:
    java jar 后台运行
    【Objective-C】内存管理
    GitHub Gist 指南
    模板发送java邮件
    JDK环境配置
    新装mysql数据库登陆不上去(账号密码正确)
    一个简单的爬取b站up下所有视频的所有评论信息的爬虫
    hexo Nunjucks Errors 解决方法
    新版正方教务系统导出课程表-油猴脚本
    ACM-图论-同余最短路
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306932.html
Copyright © 2011-2022 走看看