Python基础知识之封装篇

45 篇文章 0 订阅

通过下面一个实例说明Python封装里面的几个基本概念:

  • 对象:类对象,实例对象
  • 属性:类属性,实例属性
  • 方法:实例方法,类方法,静态方法

class Person:             ##Person是类名,类定义完成之后,就会产生全局的类对象Person           
    name = None           ##name是公有的类属性
    __age                 ##__age是私有的类属性。python中通过属性名的格式来区分公有和私有      
    def __init__(self, sex):  ##类构造方法,是类内置方法中最常见的一种(方法名以__开始和结束)
        self.sex= sex         ##self.sex是实例属性
    def print_name(self): ##实例方法,最常用的定义成员方法。在类外只能通过实例对象去调用。在类里面定义的函数与类对象或实例对象绑定了,故称做方法
	print self.name
    @classmethod          ##类方法,类对象所拥有的方法,用@classmethod来标示。能够通过实例对象和类对象去访问。
    def getAge(cls):
	 return cls.__age		
    def SetName(cls,name): ##通过类方法来修改类属性。这种方法修改的属性,类对象和实例对象都会受其影响。
	cls.name = name	   ##更改类属性
    @staticmethod():       ##静态方法,用@staticmethod来修饰,不需要多定义参数。
       print self.__age	
		
if __name__ == "__main__":
    p = Person("Lily")               ##对类对象Person进行实例化,产生实例对象p
    Person.name          ##类对象的属性,通过类对象访问类中的公共属性
    p.name               ##实例属性,通过实例对象p来访问类中的公共属性
    p.question = "WhoamI" ##给实例对象p添加一个实例属性question,该属性是实例对象特有的,类对象并不拥有它。	
                          ##如果需要在类外修改类属性,必须通过类对象去引用然后修改。通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不影响到类属性。并且之后通过实例对象去引用该名称的属性,实例属性会屏蔽掉类属性,即引用的实例属性,除非删除该实例属性。

类是对现实世界公有规律的总结和抽象。当一个类定义完成后,就会产生类名的类对象。当对这个类对象进行实例化,就产生了一个实例对象。

类的实现主要是通过属性和方法。在类里面定义,在所有类方法之外的属性,是类属性,如name; 在类方法里面的属性,是实例属性,如self.sex。

类属性和实例属性的区别有三个

  • 类属性是被所有类对象共有的,而实例属性只能被具体的实例所特有;
  • 对属性的调用方式也不同。类属性可以通过类对象的引用方式和实例对象来调用,如Person.name 和p.name;而实例属性只能通过实例来调用,p.sex是正确的,Person.sex是错误的;
  • 属性的修改方式不同。类属性只能通过类方法来更改,实例属性只能通过实例方法来更改。
方法中类方法和实例方法的区别在于

  • 类方法和实例方法的定义方式不同。类方法需要在方法之前用@classmethod来标示,同时类方法的第一个入参是cls.而实例方法无需特殊标示,实例方法的第一个入参是self。
  • <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">调用方法不同。类方法可以通过类对象和实例对象来调用,而实例方法只能通过实例对象来调用。</span>
  • <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">作用范围不同。类方法可以在类中共用,而实例方法只能被具体的实例对象所特有。</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值