python精讲之面向对象(4)属性,方法


前面的几章博客已经说明了类的属性和方法,但是只是粗略知道什么是属性什么是方法,这章博客带大家更深层次了解下属性和方法

属性

属性

  • 类属性,直接在类中定义的属性是类属性
  • 类属性可以通过类或类的实例访问到。但是类属性只能通过类对象来修 改,⽆法通过实例对象修改
  • 实例属性 通过实例对象添加的属性属于实例属性
  • 实例属性只能通过实例对象来访问和修改,类对象⽆法访问修改
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()
这是一个静态方法

猜你喜欢

转载自blog.csdn.net/xdc1812547560/article/details/107794748