面向对象变成是最有效的软件编写方法之一。在面向对象变成中,基于现实世界中的事物和情景,来创建类。
编写类时,大类对象都具有的通用行为。基于类创建的每个对象都自动具备这种通用行为,然后根据需要赋予每个对象独特的个性。
根据类来创建对象称为实例化,从而调用类的实例。
面向对象变成帮助你真正明白编写的代码:不仅是各行代码的作用,还有代码背后更宏大的概念。
1.创建和使用
使用类几乎可以模拟任何东西。
1.1 创建cat类
class Cat: # 使用class 语法创建类, 注意类名的首字母大写
def __init__(self, name, age): # 初始化属性 name 和 age
self.name = name
self.age = age
def jump(self): # 模拟小猫跳跃
print(f"{self.name} is jumping.")
def yawn(self): # 模拟小猫神懒腰
print(f"{self.name} is yawning.")
** 方法 init() **
类中的函数称为方法。函数的相关内容都适用于方法,但调用的方式有差别。
init_()是一个特殊的方法,每当你根据类创建新的实列时,python都会自动运行它。
这个方法的开头和结尾都有两个下划线,旨在避免python默认方法与普通方法名称冲突。
以上将方法init()定义成包含三个形参:self,name,age。在这个定义中self必不可少,且必须位于其他形参的前面。
因为python调用这个方法来创建实例时,将自动传入实参self。每个与实例相关的方法调用都自动传递实参self。
他是一个指向实例本身的引用,让实例能够访问类中的属性和方法。调用类的方法时,self都会自动传递,因此不需要传递他。
以self为前缀的变量可供类中所有的方法使用。
self.name = name 获取与形参name相关联的值,并将其赋值给变量name,然后该变量将被关联到当前创建的实例。这样可通过实例访问的变量称为属性。
1.2 根据类创建实例(实例化)
my_cat = Cat('mao rong', '4') # 实例化my_cat ,注意类名首字母大写
print(f"My cat's name is {my_cat.name}.") # 使用句点法调用属性 my_cat.name
print(f"My cat is {my_cat.age} years old.")
My cat's name is mao rong.
My cat is 4 years old.
1.3调用方法
my_cat = Cat('lili', '5')
my_cat.yawn() # 使用句点法调用类的方法(函数) ,注意要代括号。
my_cat.jump()
lili is yawning.
lili is jumping.
1.4创建多个实例
her_cat = Cat('jack', '3')
his_cat = Cat('lucy', '6')
print(f"My cat's name is {her_cat.name}.") # 使用句点法调用属性 my_cat.name
print(f"My cat is {her_cat.age} years old.")
her_cat.jump()
print(f"My cat's name is {his_cat.name}.") # 使用句点法调用属性 my_cat.name
print(f"My cat is {his_cat.age} years old.")
his_cat.yawn()
My cat's name is jack.
My cat is 3 years old.
jack is jumping.
My cat's name is lucy.
My cat is 6 years old.
lucy is yawning.