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)


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








      本文转自苏浩智 51CTO博客,原文链接:http://blog.51cto.com/suhaozhi/1912572,如需转载请自行联系原作者


相关文章
|
1天前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
1天前
|
存储 程序员 Python
Python中自定义类实例化数组的艺术
Python中自定义类实例化数组的艺术
5 1
|
1天前
|
程序员 Linux C++
Python中的WinForms类桌面应用程序开发
Python中的WinForms类桌面应用程序开发
10 4
|
1天前
|
数据处理 Python
Python中每个字段增加多条数据的高效方法
Python中每个字段增加多条数据的高效方法
5 1
|
1天前
|
存储 数据挖掘 Python
Python技术分享:实现选择文件或目录路径的方法
Python技术分享:实现选择文件或目录路径的方法
10 2
|
1天前
|
数据处理 Python
Python中按指定数量分割列表字符串的方法
Python中按指定数量分割列表字符串的方法
6 1
|
2月前
|
开发者 Python
Python对象和类
Python对象和类
12 0
|
Python 容器
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器
104 0
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器
|
索引 Python
Python的对象与类
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。首先需要明确,面向对象编程不是python独有的;面向对象是一种编程思想;在面向对象的思想中万物都是对象。
94 0
Python的对象与类
|
Python
【Python面线对象进阶⑤】——枚举类enum
枚举类,在企业开发中用的比较多 当我们需要定义常量时,一个办法是用大写的变量通过整数来定义。
177 0
【Python面线对象进阶⑤】——枚举类enum