导语:今天学习下类和对象!
一、什么是类与对象?
想象一下,我们生活中的“人类”就是一个大类别,每个人都有名字、年龄等共同的特征,还会吃饭、睡觉等共同的行为。在编程中,我们把这些共同的特征和行为打包起来,就形成了一个叫做“类”的东西。而每一个具体的人,比如“张三”、“李四”,就是从这个类中创造出来的“对象”。
二、如何定义一个类?
在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__
是一个特殊的方法,用来初始化对象的属性,eat
和sleep
是对象的行为,learn
和computer
是类和静态方法。
三、如何使用类与对象?
- 创建对象
想要使用类,我们首先得创建一个对象,就像这样:
per = Person('cuicui', '18')
这里,per
就是我们创建的一个对象,我们给它传入了名字'cuicui'
和年龄'18'
。
- 访问属性和方法
创建完对象后,我们可以这样访问它的属性和方法:
print(per.eat())
print(per.sleep())
print(per.name)
这就像是在说“per
这个对象喜欢吃什么”,“per
这个对象喜欢睡觉吗”,以及“per
这个对象叫什么名字”。
四、类方法、实例方法和静态方法
- 实例方法:对象自己会做的事情,比如
eat
和sleep
,只能通过对象来调用。 - 类方法:整个类都会做的事情,比如
learn
,可以通过类名或者对象来调用。 - 静态方法:跟类和对象都没关系的事情,比如
computer
,也可以通过类名或者对象来调用。
五、总结调用规则
1、实例方法(Instance Methods)
实例方法是类中最常见的方法类型,它们操作的是具体的对象实例。以下是实例方法的调用规则:
- 实例方法必须通过对象实例来调用。
- 实例方法在定义时,第一个参数通常是
self
,它代表当前对象实例本身。
例如:
per = Person('cuicui', '18')
print(per.eat()) # 正确:通过对象实例调用
错误示例:
Person.eat() # 错误:不能通过类名直接调用实例方法,会缺少self参数
2、类方法(Class Methods)
类方法与类直接相关,它们可以操作类的属性,也可以被对象实例调用。以下是类方法的调用规则:
- 类方法使用
@classmethod
装饰器定义。 - 类方法的第一个参数通常是
cls
,代表类本身。 - 类方法可以通过类名或对象实例来调用。
例如:
Person.learn() # 正确:通过类名调用类方法
per.learn() # 正确:通过对象实例调用类方法
3、静态方法(Static Methods)
静态方法与类和对象无关,它们不需要访问类或对象的属性。以下是静态方法的调用规则:
- 静态方法使用
@staticmethod
装饰器定义。 - 静态方法没有强制要求参数,它们可以像普通函数一样使用。
- 静态方法可以通过类名或对象实例来调用。
例如:
Person.computer(10, 20) # 正确:通过类名调用静态方法
per.computer(1, 2) # 正确:通过对象实例调用静态方法
4、总结
在Python中,不同类型的方法有不同的调用规则(总结一句话小的能用大的,大的不能用小的):
- 实例方法只能通过对象实例调用。
- 类方法可以通过类名或对象实例调用。
- 静态方法也可以通过类名或对象实例调用。