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,如需转载请自行联系原作者


相关文章
|
2月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
118 4
|
2月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
3月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
389 3
|
3月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
123 0
|
7月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
363 15
|
7月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
258 5
|
7月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
199 11
|
10月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
494 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
8月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
183 1
|
开发者 Python
Python对象和类
Python对象和类
60 0