特性和静态方法
Posted Python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特性和静态方法相关的知识,希望对你有一定的参考价值。
对象属性 # 对象私有属性(对象不可以直接访问) # 绑定方法:但凡定义到类里面的方法都是 绑定方法;对象调用绑定方法,会自动把自己作为绑定方法的第一个参数,传进去; #静态方法:解除绑定关系,本质上就是个函数,类和对象直接调用,不用传自己;所也以对象 不用实例化 也可以使用类里的方法了; # 对象特性:property通过对象方法模拟出来的property(对象的特性 会 优先于对象属性被访问) # 对象特性分为 # 1.只读特性 2.可读写性特性 3、可删除的特性 # class People(): # def __init__(self,Name,Sex): # self.name=Name #self.name是对象实例时,调用__init__方法时,初始化给对象的属性; # self.__sex=Sex #但凡属性有__(双下划线标识)就意味着着,这是初始化给对象的私有属性,对象不能直接访问; # def diaplay(self): #如何访问私有属性呢? # return self.__sex # 1、通过在类里 添加方法,对象通过这个借口访问; # # p=People(‘马腾飞‘,‘男‘) # print(p.diaplay()) # # class People(): # def __init__(self, Name, Sex): # self.name = Name # self.__sex = Sex # @property #2、通过类类内部的方法访问__sex还需要加括号,于是在此基础上,有了 @property装饰器。 # def diaplay(self): #@property: 通过装饰类的方法,给对象模拟出一个只读属性;就是负责把一个方法变成属性调用的: # return self.__sex # p1=People(‘黄蓉‘,‘男‘) # p1.diaplay #这样通过 diaplay方法 模拟出来的diaplay属性 就可以,像访问普通属性一样的方法,访问私有属性了; # print(p1.__dict__) # # # class People(): # def __init__(self, Name, Sex): # self.name = Name # self.__sex = Sex # #@property装饰器虽然解决了,私有属性 、方法的统一访问;模拟出了私有属性访问接口; # @property # 但该 接口无法 修改,私有属性还是无法修改; # def diaplay(self): # return self.__sex # @diaplay.setter #于是在此基础上产生了@diaplay.setter 装饰器,可修修改 @property特性 # def diaplay(self,value): # self.__sex=value # return # # p2=People(‘黄蓉‘,‘男‘) # print(p2.diaplay) # p2.diaplay=‘male‘ # print(p2.diaplay) # # class People(): # def __init__(self, Name, Sex): # self.name = Name # self.__sex = Sex # @property # def diaplay(self): # return self.__sex # @diaplay.setter # def diaplay(self,value): # self.__sex=value # return # @diaplay.deleter #可删除 property 特性 # def diaplay(self): # del self.__sex # # p3=People(‘黄蓉‘,‘男‘) # print(p3.diaplay) # del p3.diaplay # print(p3.diaplay) import time # class Date: # def __init__(self,Year,Month,Day): # self.year=Year # self.month=Month # self.day=Day # @staticmethod #@staticmethod,给类增加了一种新的实例化方式,直接调用类下面的方法,不用__init__ # def now(): #用Data.now的形式去产生对象,该实例用的就是当前的时间 # t=time.localtime() # obj=(t.tm_year,t.tm_mon,t.tm_mday) #新建实例并且返回 # return obj # # print(Date.now()) # # d1=Date.now() # print(id(d1))
以上是关于特性和静态方法的主要内容,如果未能解决你的问题,请参考以下文章