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 ...
随机推荐
- 如果你喜欢python,那你迟早会喜欢上julia的!
你可曾想过有那么一门语言: 这门语言能够有C语言一样的速度,Ruby一样得活力(dynamism).像homoiconic一样的语言,它像Lisp一样有宏,但是也像Matlab一样有显而易见.熟悉的数 ...
- mysql 物理数据存放
报错误:1030 - Got error 28 from storage engine 3.在系统中查看/tmp是否已经满了: [root@localhost /]# df /tmp/ Filesys ...
- css min-width和max-width
min-width: 浏览器缩小设置min-width,元素最小也是min-width设置的值.设置min-width元素不会压扁. max-width:元素最大宽度
- struts2:表单标签
目录 表单标签1. form标签2. submit标签3. checkbox标签4. checkboxlist标签5. combobox标签6. doubleselect标签7. head标签8. f ...
- Android launchMode SingleTask newIntent 的问题
前置条件 项目中,采用 MainActivity + 3个 fragment 的模式作为主要框架.MainActivity 使用 singleTask 模式启动.Fragment 采用 show/hi ...
- 4S店的潜规则内幕曝光
- [转]Object.keys()和for in的排序问题
原文地址:https://www.jianshu.com/p/a086ff48be6e Object.keys()和for in 具有相同的排列顺序 如果属性名的类型是Number,那么Object. ...
- Java两种核心机制
1.Java虚拟机 2.垃圾回收
- msm codec 代码跟踪
sound/soc/codecs/msm8x16-wcd.c static struct spmi_device_id msm8x16_wcd_spmi_id_table[] = { {"w ...
- Android短信监听实现,及Android4.4之后短信机制变更
前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去 按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...