python面向对象:类方法
类的方法包括以下几种:
- 构造方法 :__init__(self,)
- 析构方法 :__del__(self)
- 类方法@classmethod、实例方法、静态方法@staticmethod
一、构造方法
__init__(self , ...) 即使用self参数, 并把参数(argument)传递至self.val(泛指)的成员变量中。
class grade(object):
def __init__(self,name,score):
self.name = name
self.score = score kk = grade('kumata',61)
print(kk.name)
print(kk.score) #输出
kumata
61
二、析构方法
__del__(self) 在对象消逝的时候被调用,当对象不再被使用时,__del__()方法运行。
class grade(object):
def __init__(self):
print('score = 60!') def __del__(self):
print('del !!') def my_score(self):
print('i have 100 !!') >>>oo = grade()
score = 60! >>>oo.my_score()
i have 100 !! >>>def oo
del !!
三、
1)类方法 引入装饰器@classmethod:通过类来调用方法,而不是通过实例。
class A(object):
bar = 1
@classmethod
def class_foo(cls):
print ('Hello, kumata', cls)
print (cls.bar)
print(A.class_foo())
a = A() #实例的方法调用也ok
print(a.class_foo())
#输出
Hello, kumata <class '__main__.A'>
1
Hello, kumata <class '__main__.A'>
1
2)实例的方法 通过实例来调用方法,而不是通过类。
class A(object):
bar = 1
def class_foo(cls):
print ('Hello, kumata', cls)
print (cls.bar)
a = A() #实例的方法调用也ok
print(a.class_foo())
#输出
Hello, kumata <__main__.A object at 0x000001A9F4EADA58>
1
print(A.class_foo()) #没有@classmrthod的时候调用类方法会报错
TypeError: class_foo() missing 1 required positional argument: 'cls'
3)静态方法@staticmethod:
类中往往有一些方法跟类有关系,但是又不会改变类和实例状态的方法,这种方法是静态方法,使用 staticmethod 来装饰。
class A(object):
@staticmethod
def static_foo():
print ('Hello, kumata', A.bar)
>>> a = A()
>>> a.static_foo()
Hello,kumata 1
>>> A.static_foo()
Hello,kumata 1
可以看到静态方法没有 self 和 cls 参数,可以把它看成是一个普通的函数;
我们可以把它写到类外面,但这是不推荐的,因为这不利于代码的组织和命名空间的整洁。
python面向对象:类方法的更多相关文章
- python 面向对象 类方法,静态方法,property
property 内置装饰器函数 只在面向对象使用 把方法当初属性使用(方法不加参数) 例子: class Rectangle: def __init__(self,long,wide,color): ...
- Python面向对象 | 类方法 classmethod
类方法:必须通过类的调用,而且此方法的意义:就是对类里面的变量或者方法进行修改添加. 例一个商店,店庆全场八折,代码怎么写呢? class Goods: __discount = 0.8 # 折扣 ...
- Python面向对象静态方法,类方法,属性方法
Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...
- Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
- python面向对象进阶(八)
上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...
随机推荐
- 为何float有效位数为7位?
为何float有效位数为7位? 首先我们应该明确一点:C语言中,%f表示保留7位有效数字7位有效数字: 是指 整数部分 和小数部分一共7位 单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^ ...
- 如何保留自己对eclipse的个性化设置,在其他工程中使用
有的个性化设置是在功能的.metadata\.plugins文件夹下保存.所以新建功能后,个性化设置都没有了. 解决办法: 新建一个工程后,调好个性化配置.然后备份整个工程. 以后不要新建工程,直接解 ...
- Vue(八):监听属性watch
Vue.js 可以通过 watch 来响应数据的变化. 以下实例模拟购物车里商品数量增加,对应价格也增加 <!--模拟购物车商品数量增加,价格也随之增加--> <div id = & ...
- spring boot user authorities类图
- Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解(转)
转自:http://blog.csdn.net/zygsee/archive/2009/12/22/5046100.aspx 有时候在一个Java工程里我们需要加入第三方jar包,这时你加入的最好相对 ...
- 【Spark深入学习 -10】基于spark构建企业级流处理系统
----本节内容------- 1.流式处理系统背景 1.1 技术背景 1.2 Spark技术很火 2.流式处理技术介绍 2.1流式处理技术概念 2.2流式处理应用场景 2.3流式处理系统分类 3.流 ...
- linux每日命令(17):which命令
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...
- Spring MVC异常统一处理的三种方式
Spring 统一异常处理有 3 种方式,分别为: 使用 @ ExceptionHandler 注解 实现 HandlerExceptionResolver 接口 使用 @controlleradvi ...
- Ubuntu下搜狗输入法只显示黑框,不显示输入的汉字选项
1. cd ~/.config 2.删除三个文件夹: SogouPY, SogouPY.users, sogou-qimpanel 然后重启输入法
- printf打印输出null问题的跟踪
最近在工作中,遇到一处 printf输出有null的情况,在此记录一下,问题分析的过程. 测试代码很简单,本机为64位操作系统: #include <stdio.h> #include & ...