1. __init__()是一个特殊的方法,每当类创建实例时,python会自动运行它。
注意:务必确保__init__()的两边都有两个下划线,否则会被认为是普通方法,而不是python的默认方法。
2.定义类举例:
class 小金豆:
"""这两天南方小金豆在哈尔滨很火啊"""
def __init__(self, name, age):
"""初始化属性"""
self.name = name
self.age = age
def game(self):
"""冰雪大世界玩耍"""
print(f"{self.name} 左脚、右脚、左脚、右脚,来,左右左。。。")
3. 形参self的作用:
形参self必不可少,而且必须位于其他形参前面。python创建该类的实例时,将自动传入实参self,每个与实例相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
4.变量前缀self的作用:
以self 为前缀的变量可供类 中的所有方法使用,可以通过类的任何实例来访问。self.name = name 获取与形参name 相关联的值,并将其赋给变量name ,然后 该变量被关联到当前创建的实例。像这样可通过实例访问的变量称为属性 。
5.创建实例:
>>>小金豆子 = 小金豆("Golden bean",20)
//调用属性
>>>print(f"小金豆的名字是:{小金豆子.name}.")
小金豆的名字是:Golden bean.
>>>print(f"小金豆的年龄是:{小金豆子.age}.")
小金豆的年龄是:20.
//调用方法
>>>小金豆子.game()
Golden bean 左脚、右脚、左脚、右脚,来,左右左。。。
6.子类
class 小小金豆(小金豆):
"""子类"""
def __init__(self,name,age):
"""初始化父类的属性"""
super().__init__(name,age)
super是一个特殊的函数,可以通过它调用父类的方法。
7.子类实例化
>>>小小金豆子 = 小小金豆("small golden bean", 1)
>>>print(小小金豆子.game())
small golden bean 左脚、右脚、左脚、右脚,来,左右左。。。
8.重写父类方法
class 小小金豆(小金豆):
"""子类"""
def __init__(self,name,age):
"""初始化父类的属性"""
super().__init__(name,age)
def game(self):
print("我是小小金豆子,只会玩玩具,不会溜冰")
子类实例调用game()方法:会忽略父类中的game()方法
>>>小小金豆子 = 小小金豆("small golden bean", 2)
>>>小小金豆子.game()
我是小小金豆子,只会玩玩具,不会溜冰
9.将实例用作属性
class Toy:
def __init__(self, type="car", color="blue"):
self.type = type
self.color = color
class 小小金豆(小金豆):
"""子类"""
def __init__(self,name,age):
"""初始化父类的属性"""
super().__init__(name,age)
self.toy = Toy()
def game(self):
print(f"我是小小金豆子,只会玩玩具,我的玩具是:{self.toy.color} {self.toy.type}")
运行:
>>>小小金豆子 = 小小金豆("small golden bean", 2)
>>>小小金豆子.game()
我是小小金豆子,只会玩玩具,我的玩具是:blue car