您的位置:首页 > 编程语言 > Python开发

python 中的实例方法,静态方法以及类方法

2018-02-08 11:24 330 查看

实例方法:

如其名,实例方法就是实例所用的方法。

class Foo(object):

def __init__(self,name):
self.name = name

#一个打招呼的实例方法
def hello(self):
print("good morning,{0}".format(self.name))

if __name__ == '__main__':

person = Foo("Michael")
print(type(person))
person.hello()

[out]  <class '__main__.Foo'>
good morning,Michael


实例方法:实例对象可调用,类不可调用。实例方法的第一个参数 self 代表实例本身,这是python中的一个约定

静态方法:

静态方法其实就是一种普通函数,只不过是在类定义的命名空间中,并不会对实例进行操作。静态方法使用 @staticmethod进行装饰, 类和实例都可以调用该方法。

class Foo(object):

def __init__(self,name):
self.name = name

#一个打招呼的静态方法
@staticmethod
def hello():
print("good morning")

if __name__ == '__main__':
Foo.hello()
person = Foo("Michael")
print(type(person))
person.hello()

[out]  good morning
<class '__main__.Foo'>
good morning


类方法:

类方法与实例方法很相似,只不过类方法传入的是一个类,使用 @classmethod进行装饰 。对于类方法来说,类可以调用,实例也可以调用。

class Foo(object):

def __init__(self,name):
self.name = name

@classmethod
def hello(cls,name):
print("good morning,%s"%name)

if __name__ == '__main__':

Foo.hello("Michael")
person = Foo("Michael")
print(type(person))
person.hello("Mary")

[out] good morning,Michael
<class '__main__.Foo'>
good morning,Mary


说了这三种方法,也顺便说一下关于类变量与实例变量:

类变量就是供类使用的变量,实例变量就是供实力使用的变量。

class Foo(object):

def __init__(self,name):
self.name = name

school = "五道口"

if __name__ == '__main__':
print('类变量:%s'%Foo.school)
person = Foo("mary")
print('实例访问类变量:%s'%person.school)
print("实例变量:%s"%person.name)
person.school = "圆明园技工"
print('类变量被实例化成实例变量:%s'%person.school)

[out] 类变量:五道口
实例访问类变量:五道口
实例变量:mary
类变量被实例化成实例变量:圆明园技工


类变量可以被类和实例访问,类访问并可以改变类变量的值,当实例访问类变量并试图改变类变量时,python会将类变量实例化成一个实例变量来进行改变,而原类变量不会被改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐