2.1.5 Python方法详解

了解了类,后面必须要了解方法。
在编程当作最常见的就是实例化类,然后通过实例化来调用方法。总的可以看出来:
1)方法是定义在类里面的函数,这个函数默认第一个参数是self
2)调用方法,一般必须把类实例化后,再来调用方法,调用方法的时候后面必须加括号。
通过实例化调用方法,一般我们看着把方法绑定在实例上。
1,绑定方法和非绑定方法
绑定方法,我们一般这样用
>>> class Wife(object):
def life(self):
print "老婆去做饭"
如果想要使用Wife.life()--通知老婆去做饭,就必须:
>>> w = Wife() #实例化,实现了方法和实例的绑定
>>> w.life() #调用该方法
老婆去做饭
处理 非绑定方法
#! /usr/bin/env python
# coding=utf-8

__metaclass__ = type

class Person:
def __init__(self):
self.height = 150

def about(self,name):
print "{} is about {}".format(name,self.height)

class HotGirl(Person):
def __init__(self):
super (HotGirl,self).__init__() #重写之后调用父类初始化方法
self.breast = 90
def about(self,name):
print "{} is a hot girl,she is about {},and her break is {}".format(name,self.height,self.breast)
super (HotGirl,self).about("zhangsan") #重写之后调用父类方法

if __name__ == "__main__":
k = HotGirl()
k.about("kity")
在子类HotGirl中,因为重写了父类的__init__方法,如果要调用父类该方法,不得不使用 super(HotGirl,self).__init__()调用父类中因为子类方法重写而被遮蔽的同名方法。
在子类中,父类的方法就是非绑定方法,因为在子类中,没有建立父类的实例,却要用父类的方法。
2,类方法和静态方法
类中的方法第一个参数必须是self,并且如果要调用类的方法,要通过类的实例,即方法绑定实例后才能由实例调用。如果不绑定,一般在继承关系的类之间,可以用super函数等方法调用。
#! /usr/bin/env python
# coding=utf-8

__metaclass__ = type

class StaticMethod:
@staticmethod #@staticmethod表示下面的方法是静态方法
def staticTest():
print "这是静态方法"

class ClassMethod:
@classmethod #@classmethod表示下面的方法是类方法
def classTest( cls ):
print "这是个类方法"

if __name__ == "__main__":
s = StaticMethod()
s.staticTest()
StaticMethod.staticTest()

c = ClassMethod() #实例化
c.classTest() #实例调用静态方法
ClassMethod.classTest() #通过类来调用静态方法
需要注意的静态方法是文件名后面的括号内 没有self,这和前面定义的类中的方法不同,也正是因为这个不同,才给它另外取了一个名字叫作 静态方法
类方法,同样也具有一般方法的特点,区别也在参数上。类方法的参数也没有self,但是必须有 cls这个参数。在类方法中,能够访问类属性,但是不能访问实例属性
classmethod 和普通函数调用时都有默认参数传入,只有staticmethod调用时没有任何默认参数传入
两种方法都可以通过实例调用,即绑定实例。也可以通过类来调用
具体用途可以参考知乎: https://www.zhihu.com/question/20021164
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值