python 中的普通方法,静态方法和类方法
2017-03-08 本文已影响6人
一曲广陵散
引用
知乎
stackoverflow
举例,一个基本的实例方法像下面的例子:
class Kls(object):
def __init__(self, data):
self.data = data
def printd(self):
print(self.data)
ik1 = Kls('arun')
ik2 = Kls('seema')
ik1.printd()
ik2.printd()
图中代码:
1,2参数传递给方法
3 self参数指向当前实例自身
4 我们不需要传递自身给方法,python 解释器自己会做这些操作的
如果现在仅仅想写一些类交互而不是和实例交互的方法会怎样呢?
可以在类外面写一个简单的方法做这些,
但是这样就扩散了类代码的关系到类定义的外面
meaning of @classmethod and @staticmethod for beginner?
问题描述:
装饰器@classmethod, @staticmethod 的区别?
问题解答:
类中方法前加上装饰器@classmethod表示方法是类方法
加上@staticmethod表示方法是静态方法
虽然类方法和静态方法十分相同,但是仍然有一些差别,
类方法调用时,第一个参数必须是一个类对象,
静态方法不需要类对象作为第一个参数
范例:
class Date(object):
day = 0
month = 0
year = 0
def __init__(self, day=0, month=0, year=0):
self.day = day
self.month = month
self.year = year
类方法:
先实例化对象,在调用实例化对象中函数
day, month, year = map(int, string_date.split('-'))
date1 = Date(day, month, year)