写点什么

Python 值类与对象(2)

作者:向阳逐梦
  • 2022 年 9 月 27 日
    四川
  • 本文字数:1076 字

    阅读完需:约 4 分钟

1.继承

在创建类时,不必每次都从零开始,假设我们想要创建的新类和已经创建过的类之间有一些共同的属性和方法,我们就可以从某个现有的类继承,新类称为子类,被继承的类称为父类。继承时,子类会获取父类的所有属性和方法,并且子类还可以定义自己的属性和方法。

子类的语法规则是:class 新类名(父类名),比如 class Penguin(Bird) 就表示一个子类,父类为 Bird

1.1 子类的 __init__() 方法

在实例化子类的对象时,首先要为父类中的属性赋值,对父类属性的赋值可以使用父类的 __init__() 方法。

class Bird:    def __init__(self, n, c, s):        self.name = n        self.color = c        self.size = s        self.age = 1
def get_description(self): description = f'{self.name} {self.color} {self.size} ' print(description)
def get_age(self): print(f"This bird is {self.age} ")
def update_age(self, a): self.age = a

class Penguin(Bird): def __init__(self, n, c, s): super().__init__(n, c, s)

my_bird = Penguin('企鹅', '黑白', '大')my_bird.get_description()
复制代码

在上面的例子中,定义了一个新类 Penguin,新类继承自 Bird。在子类  Penguin__init__() 方法中调用父类 Bird__init__() 方法对父类中的属性进行赋值。语句中的 super() 函数是用于调用父类的一个方法。

1.2 定义子类的属性和方法

我们也可以在子类中定义属性和方法,语法规则和在类中定义属性和方法的规则一致,我们看下方语句:

class Bird:    def __init__(self, n, c, s):        self.name = n        self.color = c        self.size = s        self.age = 1
def get_description(self): description = f'{self.name} {self.color} {self.size} ' print(description)
def get_age(self): print(f"This bird is {self.age} ")
def update_age(self, a): self.age = a

class Penguin(Bird): def __init__(self, n, c, s): super().__init__(n, c, s) self.swimming_distance = 100
def get_swimming_distance(self): print(f"企鹅可以游 {self.swimming_distance} 米.")

my_bird = Penguin('企鹅', '黑白', '大')my_bird.get_description()my_bird.get_swimming_distance()
复制代码

为子类添加了属性 swimming_distance 和方法 get_swimming_distance(),通过访问属性和方法打印出相应的结果。

2.试一试

定义一个表示鱼的类,并定义它的继承类海鱼。

发布于: 刚刚阅读数: 3
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022.06.01 加入

InfoQ签约作者、阿里云“乘风者计划”签约博主

评论

发布
暂无评论
Python值类与对象(2)_属性_向阳逐梦_InfoQ写作社区