Python类与对象详解

导语:今天学习下类和对象!

一、什么是类与对象?

想象一下,我们生活中的“人类”就是一个大类别,每个人都有名字、年龄等共同的特征,还会吃饭、睡觉等共同的行为。在编程中,我们把这些共同的特征和行为打包起来,就形成了一个叫做“类”的东西。而每一个具体的人,比如“张三”、“李四”,就是从这个类中创造出来的“对象”。

二、如何定义一个类?

在Python中,定义一个类非常简单,就像下面这样:

class Person:
    attribute = '女人'
    
    def __init__(self, name, age):
        self.age = age
        self.name = name

    def eat(self):
        return (self.name, self.age, '喜欢吃饭')

    def sleep(self):
        return (self.name, self.age, '喜欢睡觉')

    @classmethod
    def learn(cls):
        print('人类都喜欢学习')

    @staticmethod
    def computer(a, b):
        return a + b

这里,Person就是我们定义的类名,一般我们习惯把首字母大写。attribute是这个类的一个属性,__init__是一个特殊的方法,用来初始化对象的属性,eatsleep是对象的行为,learncomputer是类和静态方法。

三、如何使用类与对象?

  1. 创建对象

想要使用类,我们首先得创建一个对象,就像这样:

per = Person('cuicui', '18')

这里,per就是我们创建的一个对象,我们给它传入了名字'cuicui'和年龄'18'

  1. 访问属性和方法

创建完对象后,我们可以这样访问它的属性和方法:

print(per.eat())
print(per.sleep())
print(per.name)

这就像是在说“per这个对象喜欢吃什么”,“per这个对象喜欢睡觉吗”,以及“per这个对象叫什么名字”。

四、类方法、实例方法和静态方法

  • 实例方法:对象自己会做的事情,比如eatsleep,只能通过对象来调用。
  • 类方法:整个类都会做的事情,比如learn,可以通过类名或者对象来调用。
  • 静态方法:跟类和对象都没关系的事情,比如computer,也可以通过类名或者对象来调用。

五、总结调用规则

1、实例方法(Instance Methods)

实例方法是类中最常见的方法类型,它们操作的是具体的对象实例。以下是实例方法的调用规则:

  1. 实例方法必须通过对象实例来调用。
  2. 实例方法在定义时,第一个参数通常是self,它代表当前对象实例本身。

例如:

per = Person('cuicui', '18')
print(per.eat())  # 正确:通过对象实例调用

错误示例:

Person.eat()  # 错误:不能通过类名直接调用实例方法,会缺少self参数

2、类方法(Class Methods)

类方法与类直接相关,它们可以操作类的属性,也可以被对象实例调用。以下是类方法的调用规则:

  1. 类方法使用@classmethod装饰器定义。
  2. 类方法的第一个参数通常是cls,代表类本身。
  3. 类方法可以通过类名或对象实例来调用。

例如:

Person.learn()  # 正确:通过类名调用类方法
per.learn()     # 正确:通过对象实例调用类方法

3、静态方法(Static Methods)

静态方法与类和对象无关,它们不需要访问类或对象的属性。以下是静态方法的调用规则:

  1. 静态方法使用@staticmethod装饰器定义。
  2. 静态方法没有强制要求参数,它们可以像普通函数一样使用。
  3. 静态方法可以通过类名或对象实例来调用。

例如:

Person.computer(10, 20)  # 正确:通过类名调用静态方法
per.computer(1, 2)       # 正确:通过对象实例调用静态方法

4、总结

在Python中,不同类型的方法有不同的调用规则(总结一句话小的能用大的,大的不能用小的):

  • 实例方法只能通过对象实例调用。
  • 类方法可以通过类名或对象实例调用。
  • 静态方法也可以通过类名或对象实例调用。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值