特性和静态方法

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

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

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

# 对象特性: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))
时间: 2024-10-11 06:44:33

特性和静态方法的相关文章

JavaScript this特性,静态方法 和实例方法,prototype

<script type="text/javascript"> function logs(str) { document.write(str + "<br />") } //利用“this 指向函数调用者”的特性,可以实现链式调用.jQuery 中大部分都是链式调用 var oName = { name: "aa", age: 999 }; window.name = "I am window"; f

面向对象【day08】:静态方法、类方法、属性方法

本节内容 概述 静态方法 类方法 属性方法 总结 一.概述 前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod).类方法(classmethod).属性方法(property) 二.静态方法 2.1 定义 说明:在方法名前加上@staticmethod装饰器,表示此方法为静态方法 1 2 3 4 5 6 7 8 class Dog(object):     def __init__(self,name):         self.name = nam

C++类中静态变量和静态方法的注意事项

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存. static成员的所有者是类本身和对象,但是多个对象拥有一样的静态成员.从而在定义对象时不能通过构造函数对其进行初始化; 静态成员不能在类定义里边初始化,只能在class body外初始化; 静态变量依旧符合public.private.protect特性; 静态成员函数没有this指针,

java执行程序的内存分析系列专栏二之static变量和方法内存分析

昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能通过类名.static变量和类名.static方法的形式调用,而普通只能对象的形式调用.但具体为什么是这样的,这得分析static变量和方法他们在内存中怎样分配的,因此在这里我首先建立一个学生类,里面有一个普通成员变量和一个静态成员变量以及一个普通方法和一个成员方法,然后建立了一个测试学生的类. 1

Windows Store 应用中获取程序集版本号的方法

本文为个人博客备份文章,原文地址: http://validvoid.net/windows-store-app-get-assembly-version/ WinRT 中对反射做了很多限制,假设 Windows Store 应用引用了一个程序集 MyApp.Utils,其中有一个类叫做 MyUtils,可以使用以下方法获得程序集 MyApp.Utils的版本号和文件版本号. 获得程序集版本号 方法一 using System.Reflection; public static string G

SQL Server 调用 C# 方法实现正则表达式验证

?  前言 1.   在 SQL Server 中默认是不支持正则表达式验证的,如果需要某个字符串匹配一个正则表达式的验证规则,就需要额外的编写 C# 方法,并发布到 SQL Server 数据库中. 2.   很幸运,在 VS 2005 之后的版本中,都支持创建 SQL Server 数据库项目,在该项目中可以创建支持调用 C# 函数的存储过程.函数.触发器等等. 3.   本文主要学习以下几点: 1)   在 VS 2013 中创建 SQL Server 数据库项目. 2)   创建 C#

JavaScript 字符串处理详解

一.创建字符串       创建一个字符串,将一组字符串用引号包起来,将其赋值给一个字符串变量. var JsStr="Hello,JavaScript String!"; 二.字符串查找方法 1.字符方法charAt(),charCodeAt(),fromCharCode() (1)charAt()函数 功能:返回字符串中指定位置的字符; 语法:String.charAt(n); 参数:n--字符在字符串中的位置(字符串第一个字符的位置为0); 返回值:返回n位置的字符,如果n不在0

Java学习lesson 12

*数组的高级排序 *冒泡排序 两个两个比较,大的往后 *选择排序 从0索引开始,用它对应的元素一次和后面遏制进行比小的往前放,第一次比较完毕,最小值出现在了最小索引处, *1)用0索引对应的元素依次和后面的索引对应的元素进行比较 比length.arr-1次 *二分查找;二分搜索法 *前提条件:数组必须是有序的(一个排好序的数组) *思想:猜想中间的索引,这要可以将数组减半 *步骤: 1)定义最小索引,最大索引 2)计算中间索引 3)拿中间索引的元素和要查找的索引进行比较 相等:直接返回中间索引

7blog

类的几个重要方法 静态方法(staticmethod).类方法(classmethod).属性方法(property) 静态方法 定义:在方法名前加上@staticmethod装饰器,表示此方法为静态方法,只是名义上归类管理,实际上在静态方法里访问不了类或者实例的任何属性. class Dog(object): def __init__(self, name): self.name = name @staticmethod # 在方法前加上staticmethod 装饰器定义静态方法 def e