前面的几章博客已经说明了类的属性和方法,但是只是粗略知道什么是属性什么是方法,这章博客带大家更深层次了解下属性和方法
属性
属性
- 类属性,直接在类中定义的属性是类属性
- 类属性可以通过类或类的实例访问到。但是类属性只能通过类对象来修 改,⽆法通过实例对象修改
- 实例属性 通过实例对象添加的属性属于实例属性
- 实例属性只能通过实例对象来访问和修改,类对象⽆法访问修改
class A:
# 类属性 直接在类中定义的属性
a = 0
a1 = A()
# 实例属性 通过实例对象添加的属性属于实例属性
a1.a = 10
print(A.a)
print(a1.a)
0
10
class A:
# 类属性 直接在类中定义的属性
a = 0
a1 = A()
# 实例属性 通过实例对象添加的属性属于实例属性
a1.a = 10
# 实例属性只能通过实例对象来访问和修改,类对象⽆法访问修改
a1.a = 20
# 类属性可以通过类或类的实例访问到。但是类属性只能通过类对象来修 改,⽆法通过实例对象修改
A.a = 100
print(A.a)
print(a1.a)
- 通过实例对象添加的属性是实例属性,通过self传递的属性是随实例变化而变的,所以如下实例演示中name是实例属性,只能通过实例对象来访问
class A:
# 类属性 直接在类中定义的属性
a = 0
def __init__(self):
self.name = '程序猿'
a = A()
print(a.name)
程序猿
方法
方法概念
- 在类中定义,以self为第⼀个参数的⽅法都是实例⽅法
- 实例⽅法在调⽤时,Python会将调⽤对象以self传⼊
- 实例⽅法可以通过类实例和类去调⽤
- 当通过实例调⽤时,会⾃动将当前调⽤对象作为self传⼊
- 当通过类调⽤时,不会⾃动传递self,我们必须⼿动传递self
- 类⽅法 在类的内容以@classmethod 来修饰的⽅法属性类⽅法
- 类⽅法第⼀个参数是cls 也会⾃动被传递。cls就是当前的类对象
- 类⽅法和实例⽅法的区别,实例⽅法的第⼀个参数是self,类⽅法的第⼀ 个参数是cls
- 类⽅法可以通过类去调⽤,也可以通过实例调⽤
class A:
# 类属性 直接在类中定义的属性
a = 0
def __init__(self):
self.name = '程序猿'
# 实例方法
def b(self):
print('b 这是实例方法')
# 类方法
@classmethod
def c(cls):
print('c 这是类方法')
a = A()
a.b()
A.c()
a.c()
b 这是实例方法
c 这是类方法
c 这是类方法
静态⽅法
- 在类中⽤@staticmethod来修饰的⽅法属于静态⽅法
- 静态⽅法不需要指定任何的默认参数,静态⽅法可以通过类和实例调⽤
- 静态⽅法,基本上是⼀个和当前类⽆关的⽅法,它只是⼀个保存到当前类 中的函数
- 静态⽅法⼀般都是些⼯具⽅法,和当前类⽆关
class A:
# 类属性 直接在类中定义的属性
a = 0
def __init__(self):
self.name = '程序猿'
# 实例方法
def b(self):
print('b 实例方法')
# 类方法
@classmethod
def c(cls):
print('c 这是类方法')
@staticmethod
def d():
print('这是一个静态方法')
a = A()
a.d()
这是一个静态方法