码迷,mamicode.com
首页 > 其他好文 > 详细

特性和静态方法

时间:2017-04-22 14:44:16      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:标识   alt   定义   span   特性   括号   log   方式   let   

对象属性
# 对象私有属性(对象不可以直接访问)

# 绑定方法:但凡定义到类里面的方法都是 绑定方法;对象调用绑定方法,会自动把自己作为绑定方法的第一个参数,传进去;

#静态方法:解除绑定关系,本质上就是个函数,类和对象直接调用,不用传自己;所也以对象 不用实例化 也可以使用类里的方法了;

# 对象特性: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))

 

特性和静态方法

标签:标识   alt   定义   span   特性   括号   log   方式   let   

原文地址:http://www.cnblogs.com/sss4/p/6747421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!