面向对象 —— 属性 和 方法

Python 学习笔记

一、属性


1.1、类属性

  • 直接再类中定义的属性,就是类属性
  • 可以通过类访问,也可以通过实例对象访问
class A(object):
    count = 66

print('A:', A.count)    # 通过类访问

a = A()
print('a:', a.count)    # 通过实例对象访问
  • 类属性只能通过类对象来修改,无法通过实例对象来修改
class A(object):
    count = 66

a = A()
a.count = 5
print('a:', a.count,'  A:', A.count)

A.count = 5
print('a:', a.count,'  A:', A.count)

1.2、实例属性

  • 通过实例对象添加的属性,就是实例属性
  • 只能通过实例对象来访问和修改,类对象无法访问和修改
class A(object):
    count = 66
    
    def __init__(self):							# self 表示, 当前对象通过 self 来添加到实例的对象当中
        self.name = '葫芦娃'						# 所以 self 是一个实例属性

a = A()
print(a.name)
# print(A.name)   								# AttributeError: type object 'A' has no attribute 'name'

a.name = '钢铁侠'
print(a.name)
# A.name = '连访问都做不到, 肯定无法修改...'



二、方法


2.1、实例的方法

  • 在类中定义,以 self 为参数的方法都是实例方法
  • 实例方法在调用时,Python 会将调用的对象作为 self 传入
  • 当通过类调用时,不会自动传入 self
class A(object):
    count = 66

    def text(self):
        print('这是 text 实例方法...', self)

a = A()
a.text()
# A.text()      								# 报错, 缺少参数 'self'
A.text(a)       								# 等价于 a.text()

2.2、类方法

  • 在类的内部使用 @classmethod 来修饰的方法,就是类方法
  • 类方法第一个参数是 cls ,会被自动传递, cls 就是当前的类对象
class A(object):
    count = 66

    @classmethod
    def text2(cls):
        print('这是 text2 类方法...', cls)

a = A()
A.text2()
a.text2()       								# 等价于 A.text2()

类方法 & 实例方法的区别: 实例方法第一个参数是 self,类方法第一个参数是 cls


2.3、静态方法

  • 在类中内部使用 @staticmethod 来修饰的方法,属于静态方法
  • 静态方法不需要指定任何默认的参数,静态方法可以通过类和实例去调用
  • 静态方法是一个独立的、单纯的函数,只是仅仅托管于某个类中,其实就是方便咱们使用和维护
class A(object):
    count = 66
    
    @staticmethod
    def text3():
        print('text3 静态方法执行了...')

A.text3()

a = A()
a.text3() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值