前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python进阶-面向对象-下

Python进阶-面向对象-下

作者头像
小团子
发布2019-07-18 15:25:26
2990
发布2019-07-18 15:25:26
举报
文章被收录于专栏:数据云团数据云团

一、静态函数和类函数

类成员函数均与实例绑定,只能通过对象访问而不能通过类名访问。Python 中支持两种基于类名访问成员的函数:静态函数和类函数,它们的不同点是类函数有一个隐性参数 cls 可以用来获取类信息,而静态函数没有该参数。

静态函数使用装饰器 @staticmethod 定义,类函数使用装饰器 @classmethod 定义。

代码语言:javascript
复制
class MyClass(object):
  
  message = "数据云团"
  
  def __init__(self, name="unset", color="black"):
    print("初始化:", name, color)
    
  def show(self):
    print(self.message)
    print("实例成员变量:", self.name, self.color)
    
  @staticmethod
  def printMessage():
    print("打印消息")
    print(MyClass.message)
  
  @classmethod
  def createObj(cls, name, color):
    print("创建对象:", cls.__name__, name, color)
    return cls(name, color)

定义静态方法 printMessage(),在其中可以访问类成员变量 myClass.message,可以通过类名对它进行调用;

定义类方法 createObj(),类方法定义中的第一个参数必须为隐性参数,在 createObj() 中可以通过隐性参数 cls 替代类名本身,本例中的 createObj 建立并返回了一个 MyClass 实例。

二、私有成员

封装性是面向对象编程的重要特点,Python 也提供了将不希望外部看到的成员隐藏起来的私有成员机制。Python 使用指定变量名格式的方法定义私有成员,即所有以双下划线 “__” 开始命名的成员都为私有成员。

代码语言:javascript
复制
class MyClass(object):
  
  def __init__(self, name="unset", color="black"):
    print("初始化", name, color)
    self.__name = name
    self.__color = color
  
  def __del__(self):
    print(self.__name)
    
inst = MyClass("小团", "White")
del inst
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档