python面向对象之方法

类成员:字段+方法+属性

字段:普通(实例对象,每个对象保存一次)+静态(全局变量,只保存一次,所有方法共享)

方法:普通方法(实例方法:self.fun())+类方法(@classmathod)+静态方法(所有方法分类)

属性:方法属性

#1普通方法:(使用较多)

#encoding=utf-8

class Foo:

def __init__(self, name):

self.name = name

def ord_func(self):

""" 定义普通方法,至少有一个self参数 """

# print self.name

print u‘普通方法‘

#2类方法:(不能使用实例)

@classmethod

def class_func(cls):

""" 定义类方法,至少有一个cls参数 """

print u‘类方法‘

#3静态方法:(将分类)(不能使用实例)

@staticmethod

def static_func():

""" 定义静态方法 ,无默认参数"""

print u‘静态方法‘

# 调用普通方法:实例+.+方法

f = Foo("gloryroad")

f.ord_func()

# 调用类方法:类+.+方法

Foo.class_func()

# 调用静态方法:

Foo.static_func()

 实例:

将两个文件操作方法,一个改成类方法,一个改成静态方法,再加上实例方法,读取文件全部

#coding=utf-8

class rw(object):

#构造函数--构造实例的函数,不能被类方法或者静态方法引用参数

# def __init__(self,mydir):

# self.mydir=mydir

#追加写文件*类方法

@classmethod

def w(cls,path,content):

with open(path.decode("utf-8"),"a") as fp:

fp.write(content+"\n")

#读指定行文件内容*静态方法

@staticmethod

def r(path,linenum):

lineno=0

with open(path.decode("utf-8"),"r") as f:

for line in f:

lineno+=1

if linenum==lineno:

return line

return ""

fh=rw("e:\\a.txt")

rw.w("e:\\a.txt","hezyy")

print rw.r("e:\\a.txt",2)

三个方法区别:

类方法可以被类对象或实例调用,实例方法只能被实例调用,它

只属于类的单个实例拥有,静态方法两者都能调用,它在类和实

例间共享。Python实现了一定的灵活性使得类方法和静态方法,

都能够被实例和类二者调用。

所以三者主要区别在于参数传递上的区别,实例方法隐含传的参

数是类实例self,而类方法隐含传递的参数是类本身cls,而静态方

法无隐含参数,主要为了类实例也可以直接调用静态方法

原文地址:https://www.cnblogs.com/zyy98877/p/8536869.html

时间: 2024-07-30 08:30:54

python面向对象之方法的相关文章

Python 面向对象 特殊方法

Python 的特殊方法,两边带双下划线的方法. 比如:__init__(self, ...).__del__(self) 1.__init__(self,...) : 构造方法 __init__(self, ...)  构造方法,这个方法在创建对象时,自动触发执行.实例化类格式: 类名() class Phone: def __init__(self, brand, year): self.brand = brand self.year = year print("执行 __init__ 方法

python面向对象魔术方法补充

一.描述符 在 面向对象 编程中 定义一个(没有定义方法)类:class person , 在这个类里面,有name,age, heigth, weight,等等属性, 这个类就可以看作一个对 person 的描述符,而具体的实例则是具体的“被描述物”. 而在python中,描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋

python面向对象析构方法-----> __del__方法

1.什么时候用法析构方法. 在对象资源被释放的时候触发. 2.使用场景. 帮助清理资源,比如python解释器清理不掉的资源. 例子: class Foo: def __init__(self,x): self.x=x def __del__(self): #在对象资源被释放时触发 print('现在是__del__执行') f=Foo(100000) del f #这个步骤在释放资源,这个时候会触发函数中的__del__函数中定义的方法. print('====================

python面向对象----- __str__方法

1.__str__的作用 打印对象的时候,将__str__中定义的内容返回出来. 例子: class People: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def __str__(self): #在对象被打印时触发执行 return '<name:%s age:%s sex:%s>' %(self.name,self.age,self.sex) #只能返回字符串 p1=People('

Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属

Python面向对象之反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) class Foo:    f = '

如何用Python的面向对象编程方法节约代码

如何用对象继承来减少量化策略代码量 在真格量化的API文档里我们经常遇到"bal.CashBalance"."order.id"这类看起来非常诡异的变量写法.这都是些什么东西呢? 这得从"面向对象"(Object Oriented)的编程思想说起. 首先,"对象"可以是我们想研究的任何事物,从一个自然数到一个星系,都可以视为对象.它不仅可以是具体的事物,比如一吨大豆,还可以是更抽象的规则,比如大豆期货合约. 其次,对象具有状态

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

Python 面向对象class(2)

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定