目录
Instance Methods
Class Methods
Static Methods
有的方法是类自己的,有的方法是类实例化对象的,有的方法什么也不是。
- 如果前面没有装饰器,则是实例的方法,第一个参数是self。
- 如果前面是@classmethod装饰器,就是类方法,第一个参数是cls。
- 如果前面是@staticmethod装饰器,就是静态方法。
Instance Methods
class MyClass:
def __init__(self, name):
self.name = name
Class Methods
class A():
count = 0
def __init__(self):
A.count += 1
@classmethod
def kids(cls):
print("A has", cls.count, "little objects.")
if __name__ == '__main__':
easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
# =====输出===== #
A has 3 little objects.
class A():
count = 0
def __init__(self):
A.count += 1
@classmethod
def kids(cls):
print("A has", cls.count, "little objects.")
if __name__ == '__main__':
easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
# =====输出===== #
A has 3 little objects.
A.count是一个类属性,self.count是一个对象实例属性。
类方法只能访问类变量,不能访问实例变量。
Static Methods
只是为了方便所以存在的静态方法。
class CoyoteWeapon():
@staticmethod
def commercial():
print("This CoyoteWeapon has been brought to you by Acme.")
if __name__ == '__main__':
CoyoteWeapon.commercial()
# =====输出===== #
This CoyoteWeapon has been brought to you by Acme.
我们不需要创建对象就可以访问方法。静态方法经常用于处理一些有关类的相同操作。可以由类调用,也可以由实例调用。静态方法不能访问类变量,也不能访问实例变量。静态方法隔离了它跟类或实例的任何关系。静态方法第一个参数如果写self的话也不是不可以,调用时应自行补全实例名。



