8.python之面相对象part.2(特殊属性,类方法,静态方法)

一.关于特殊属性(property)。

接着上一篇文章继续说,如果想调用python中一个对象的属性,直接使用类或者对象名称在后面加.点然后写上属性名称就可以跳用这个类或者对象的属性了,比如说像下面这样。

class person:

def __init__(self,career):

self.career = career

ayumi = person(career="diva")

print ayumi.career #ayumi是实例化出来的一个对象后面加.点,后面接属性名,就是直接调用这个对象的career属性。

上面说的是调用一个对象的属性,那么特殊属性到底是什么?

所谓的特殊属性,就是以访问对象属性的方式去执行一个对象中的一个函数。

举个例子:

class person:

def __init__(self,career):

self.career = career

@property

def show_carrer(self):

return self.career

ayumi = person("diva")

print ayumi.show_carrer   #show_carrrer本身是个函数,需要在后面加括号才可以执行,但是现在使用了调用对象属性的方法执行了这个函数。

#解释一下,@property是python内置的一个装饰器,被这个装饰器“装饰”过的函数(方法),在通过对象去调用的时候,直接可以以调用属性的方式去执行这个函数。

二.关于类方法(classmethod)。

类方法就是在类中定义了一个方法,想调用这个方法的时候无需生成任何对象,直接通过类就调用的函数就是类方法。

举个例子~:

class num:

count = 0

def __init__(self):

num.count += 1

def __del__(self):

num.count -= 1

@classmethod

def show_count(cls):  《-----注意!!这里传入的不再是一个对象,而是一个类!!

return num.count

a = num()

b = num()

print num.show_count()

#@classmethod 也是python内置的一个装饰器,用于将类中的一个函数变为类可以直接调用的函数,无需实例化出任何对象。

三. 关于静态方法(staticmethod)。

什么是静态方法?

静态方法就是在一个类里面定义的一个普通函数,但是这个函数不与类和对象有任何的绑定关系,这个函数无法访问对象中的任何属性,也不能访问类中的任何属性,但是这个函数既可以通过类去调用,也可以通过对象去调用,这种放在类里面,但是又与类没什么关系的函数就是静态方法。

import time

class num:

count = 0

def __init__(self):

num.count += 1

def __del__(self):

num.count -= 1

@classmethod

def show_count(self):

return num.count

@staticmethod  #定义静态方法

def dis_time():

return time.localtime()

a = num()

b = num()

print b.dis_time() #通过对象调用静态方法。

>>>time.struct_time(tm_year=2017, tm_mon=4, tm_mday=2, tm_hour=16, tm_min=17, tm_sec=36, tm_wday=6, tm_yday=92, tm_isdst=0)

print num.dis_time() #通过类来调用静态方法。

>>>time.struct_time(tm_year=2017, tm_mon=4, tm_mday=2, tm_hour=16, tm_min=17, tm_sec=36, tm_wday=6, tm_yday=92, tm_isdst=0)

从上面这段例子就可以看出,静态方法只是在名义上归属一个类或者对象,但是没有办法访问任何类属性和实例属性。

时间: 2024-11-07 17:49:08

8.python之面相对象part.2(特殊属性,类方法,静态方法)的相关文章

8.python之面相对象part.6(反射&__call__,__setattr__,__delattr__,__getattr__)

一.什么是反射? 反射,又被称为自省,主要是指程序本身可以访问,检测,和修改"自己",状态或行为的一种能力. 二.python是如何体现这种反射机制的? 通过字符串去操作对象相关的属性,python中,一切皆对象,所有的地方都可以用到反射. python内部提供了四个实现反射(自省)的函数,这四个函数可以适用于任何的类和对象(这是因为类本身也是一个对象!) 1.hasattr(object,str) 用来检测一个对象中是否有某个字符串对应的方法或者属性. 例如: l1 = [] pri

8.python之面相对象part.1(初识类与对象)

一.类和对象的概念. 什么是类 类就是把一类事物相同的特征和动作整合到一起就是类比如说"人"就是一个类. 什么是对象 对象就是基于类创建出来的一个具体存在的事物这个事物包含了将其创造出来的类的特征和动作. 类与对象有什么关系一切的对象都是由类产生的假如说造一支笔首先要有一个造笔的模版上帝制造人也是一样制造一个人也需要一个造人的模版这个模板就是人的"类"然后根据类的定义来产生一支支笔和一个个的人. 什么是实例化 由类产生对象的过程就是实例化类实例化的结果就是一个对象对

python之面相对象程序设计

一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 面向对象的程序设计:路飞学院版 二 什么是面向对象的程序设计及为什么要有它 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将

8.python之面相对象part.8(__slots__属性)

一.__slots__属性有什么作用?为什么要有__slots__属性. 首先来说一说__slots__是什么,__slots__是一个类变量,它里面的值可以是字符串,可以是列表,可以是元组.(如果__slots__这个属性的值为一个字符串,那么意为着这个类生成的对象,只能有一个属性). 那么为什么要用__slots__属性呢? 关于这个问题还要从每个对象的__dict__属性开始说起. 当使用.点来访问属性本质就是在访问类或者对象的__dict__属性字典(类的字典是共享的,而每个实例的是独立

(一)Python入门-6面向对象编程:03类对象-类属性-类方法-静态方法

一:类对象 前面讲的类定义格式中,“class 类名:”.实际上,当解释器执行class 语句时, 就会创建一个类对象. [操作] #测试类对象的生成 class Student: pass #空语句 print(type(Student)) print(id(Student)) print(Student) s1 = Student() print(s1) Stu2 = Student s2 = Stu2() print(Stu2) print(s2) 运行结果: <class 'type'>

Python面向对象之类属性类方法静态方法

类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init); 对象创建后,内存中就有了一个对象的实实在在的存在--实例: 因此通常也会把: 1.创建出来的对象叫做类的实例: 2.创建对象的动作叫实例化: 3.对象的属性叫实例属性: 4.对象调用的方法叫实例方法: 在程序执行时: 1.对象各自拥有自己的实例属性: 2.调用对象方法,可以通过self. 访问

python的类的 静态属性 类方法 静态方法

一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh): self.Name=name self.Ower=ower self.Width=width self.Length=length self.Heigh=heigh r1=Room("厕所","北爷",2,2,20000)#实例化出来一个实例r1,实例化的过程就是执

8.python之面相对象part.5(子类调用父类的方法,以及super关键字)

python中子类要调用父类的某个方法,在python早期版本中是这样实现的: class A: def __init__(self): print "enter A" print "leave A" class B(A): def __init__(self): print "enter B" A.__init__(self) print "leave B" b = B() >>>enter B enter

补8.python之面相对象part.6(补充授权与继承的概念)

一.什么是python中对类的"包装". (简单来说,包装就是通过类继承的特性为类增加或者修改类中原有的功能) 举个例子,python内部提供了很多标准的数据类型,以及很多的内置方法,在有一些场景下,我们需要基于标准数据类型去定制自己所需要的数据类型,新增或者改写一些类的方法,在做这种操作的时候,就需要用到类继承相关的知识.(python自带的标准类也可以通过"包装"这种方式来进行二次加工.) 例子1:给python的list列表类增加一个功能,这个功能可以查看列表