Python中类的相关知识点

在子类中调用父类的同名方法

在子类中调用父类方法: 一般是用于扩展父类方法
格式:父类名.方法名(self)

 

class Person(object):
    def eat(self):
        print('就喜欢吃肉')

class Man(Person):
    def eat(self):
        # 在子类中调用父类方法
        Person.eat(self)
        print('我就爱吃海参')

m1 = Man()

m1.eat()

super()的使用

super在python中是代表查询顺序的,也就是用super可以优先查询当前类父类中的属性和方法

格式:
super().方法名(参数)

 

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


class Dog(Animal):

    def __init__(self, name, age, type):
        # 在Animal类中只有姓名和年龄,此时我们想增加一个类型属性type,应该怎么做??
        # 如果我们只想在原有功能上扩展可以使用super调用父类的init方法,并进行扩展

        # self.name = name
        # self.age = age

        super().__init__(name, age)
        self.type = type


d1 = Dog('小狗', 8, '金毛')

print(d1.type)

类方法

类方法: 从属于类的方法,类方法内部第一个参数必须是类, 一般使用cls形参进行接收

格式:
@classmethod
def func1(cls, 参数1, 参数2...):
    pass

注意: 在类方法中有self么??? 那怎么获取到实例属性和实例方法呢?
我们之前学过先有类后有对象,所以在类方法中还不能调用实例属性和实例方法,如果必须调用改写成实例方法即可

类方法的使用场景:
在方法内部,只需要对于类属性和类方法进行调用,而不需要使用到实例属性和实例方法,此时就建议大家使用类方法.

类方法在调用时不需要创建对象, 实例方法在调用时必须有对象.

 

# 吃苹果案例
# 需求: 有一个苹果树, 有若干个苹果, 每个人可以吃苹果,直到把树上的苹果吃完
# 对象: 苹果  属性: 数量(count)
# 对象: 人   方法:吃苹果


class Apple(object):
    apple_count = 0

    def __init__(self):
        Apple.apple_count += 1


class Person(object):
    @classmethod
    def eat_apple(cls, num):
        Apple.apple_count -= num


# 创建对象
a1 = Apple()
a2 = Apple()
a3 = Apple()
a4 = Apple()

Person.eat_apple(2)

print(Apple.apple_count)

静态方法

  • 静态方法和类方法以及实例方法相比使用场景较少,但是调用时要会使用

  • 静态方法可以使用类和实例去调用,但是建议大家使用类调用.

    • 因为此处不依赖于对象,但是如果使用对象调用需要先创建对象

静态方法: 在方法中,不需要使用实例也不需要使用类的情况下,可以将方法写成静态方法

格式:
@staticmethod
def func1(参数1, 参数2....):
    pass

使用场景: 既没有cls的传入,也没有self的传入,所以在内部就无法使用类和实例. 例如一些类的说明,帮助,非依赖性工具都可以使用静态方法完成.


静态方法和函数最大的区别就是静态方法写在类的内部.
将静态方法写在类的内部好处: 便于调用,便于维护

 

class Apple(object):

    @staticmethod
    def print_info():
        print('这个类是用来计算苹果数量的')

    @staticmethod
    def sum_apple(num1, num2):
        return num1 + num2


Apple.print_info()
print(Apple.sum_apple(3, 4))

Python中的继承是面向对象编程中的一种重要机制,它允许我们定义一个新,它继承了旧的所有属性和方法,并且可以在此基础上进行扩展和修改。下面是一些Python中类继承的知识点: 1. 语法:定义一个继承自另一个的新时,需要在新名称后面加上父名称,并用圆括号括起来,如下所示: ```python class ChildClass(ParentClass): # 子的属性和方法定义 ``` 2. 继承的型:Python支持单继承和多继承。单继承指子只继承一个父,而多继承则允许子继承多个父。 3. 调用父方法:在子中我们可以通过super()函数来调用父的方法,这样可以避免重复代码,同时也保证了子能够正确地继承父的行为。 4. 方法重写:子可以重写父的方法,以实现自己的行为。当子定义了与父同名的方法时,它将覆盖父的方法。 5. 方法重载:Python不支持方法重载,即不能定义多个同名方法,只能通过默认参数或可变参数来实现似的效果。 6. 多态:Python中的多态是基于继承和方法重写实现的。如果一个子重写了父的方法,那么在调用该方法时,如果对象是子的实例,那么将调用子的方法,否则将调用父的方法。 7. 抽象Python中没有抽象的概念,但是可以通过abc模块来实现似的功能。抽象是一个不能被实例化的,它定义了一些方法,但是这些方法的实现是由其子来完成的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值