特性和静态方法

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))

 

以上是关于特性和静态方法的主要内容,如果未能解决你的问题,请参考以下文章

片段中的网格视图

JDK5新特性_1.方法静态导入

从活动中调用片段中的非静态方法?

特性和静态方法

支持动态或静态片段的不同屏幕尺寸?

C#常用代码片段备忘