14 python类的属性和方法

一、类的属性

  • 属性:在类里面定义的变量称之为发属性

1.类属性:直接在类中定义的属性是类属性

  • 类属性可以通过类或类的实例访问到。但是类属性只能通过类对象来修改,无法通过实例对象修改(实例修改属性值后,也仅实例实中生效,未修改类里面属性的值)
class A(object):
	count=0			# 类属性
a=A()
print(a.count)		# 0
print(A.count)		# 0
a.count=10
print(a.count)		# 10
print(A.count)		# 0
A.count=20
print(a.count)      # 10
print(A.count)      # 20

2.实例属性: 通过实例对象添加的属性属于实例属性

  • 实例属性只能通过实例对象来访问和修改,类对象无法访问修改
class A(object):
    count = 0
    def __init__(self):
        self.name = '葫芦娃'		# 实例属性

a=A()
a.age=5     			        # 实例属性
print(a.name)	# 葫芦娃
# print(A.name)  # AttributeError: type object 'A' has no attribute 'name'

二、类的方法

1.实例方法:在类中定义,以self为第一个参数的方法都是实例方法

  • 实例方法在调用时,Python会将调用对象以self传入
  • 实例方法可以通过类实例和类去调用
  • 当通过实例调用时,会自动将当前调用对象作为self传入
  • 当通过类调用时,不会自动传递self,我们必须手动传递self
class A(object):
    def __init__(self):			# 实例方法
        self.name = '葫芦娃'
    def text(self):				# 实例方法
        print('这是test方法',self)
a=A()
a.text()
# 这是test方法 <__main__.A object at 0x000000000271D400>
# A.text()    # TypeError: text() missing 1 required positional argument: 'self'
A.text(a)
# 这是test方法 <__main__.A object at 0x000000000271D400>
  • 类名调用实例方法,需要添加参数实例用,即实例名.方法() 等价于 类名.方法(实例名) 。如: a.text() 等价于 A.text(a)

2.类方法:在类的内容以@classmethod 来修饰的方法属性类方法

  • 类方法第一个参数是cls 也会自动被传递。cls就是当前的类对象
    -类方法可以通过类去调用,也可以通过实例调
class A(object):
    count = 0       # 实例属性
    @classmethod
    def text2(cls): 		# 类方法
        print('这个是test2方法',cls)
        print(cls.count)
A.text2()   # 0 
a=A()
a.text2()  # 0 
  • 实例对象调用类方法,直接调用,即实例名.方法() 等价于 类名.方法() 。如: a.text2() 等价于 A.text2()

3.类方法和实例方法的区别:

  • 实例方法的第一个参数是self,类方法的第一个参数是cls
  • 类方法定义时,需要加@classmethod来修饰,实例方i法不用
  • 在类的方法应用没有什么区别

4.静态方法:在类中用@staticmethod来修饰的方法属于静态方法

  • 静态方法不需要指定任何的默认参数,静态方法可以通过类和实例调用
  • 静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数
  • 静态方法一般都是些工具方法,和当前类无关
class A(object):
   @staticmethod
    def text3():
        print('这个是test3方法')
A.text3()   # 0 
a=A()
a.text3()  # 0 
# 这个是test3方法
# 这个是test3方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值