Python语句学习-‘类’-‘class’

一,类的定义

首先看下面例子:

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

    def introduce(self):
        print(f"我叫 {self.name},今年 {self.age} 岁。")

概念:这里定义了一个‘class类’叫做person。这里可以把它想象为一个函数库,只要定义了一个‘类’,就可以在这里调用类。

结构:

#__init__ 方法是一个特殊的方法,当我们创建 Person 类的对象时,这个方法会被自动调用。

在这个方法中,设置对象的初始属性值(在类里面,name,age这些变量就是属性)。#introduce 方法定义了一个行为,当调用这个方法时,会打印出关于这个人的介绍信息。

举例:

接下来根据这个类创建对象:

person1 = Person("张三", 20)
person2 = Person("李四", 25)

person1和person2叫做实例/对象。他们都在person这个’类‘下定义的。他们都可访问person这个类(库),调用里面的方法(即函数)和属性(即变量)

#访问属性(变量)
print(person1.name)  # 输出 "张三"
print(person2.age)   # 输出 25

#访问方法(函数)
person1.introduce()  # 输出 "我叫 张三,今年 20 岁。"
person2.introduce()  # 输出 "我叫 李四,今年 25 岁。"

二、类的属性

类的属性分为类属性(属于整个类)和实例属性(只属于实例)

class Circle:
    pi = 3.14  # 这是一个类属性

    def __init__(self, radius):
        self.radius = radius  # 这是一个实例属性

    def calculate_area(self):
        return Circle.pi * self.radius ** 2  # 在方法中使用类属性

类属性:在这个例子中,pi 就是类属性,无论创建多少个 Circle 类的实例,pi 的值都是 3.14 且共享

实例属性:实例属性则是属于每个具体实例(对象)的属性,每个实例都有自己独立的值。比如上面例子中的 radius ,每个 Circle 对象的 radius 都可以不同。

circle1 = Circle(5)
circle2 = Circle(10)

print(circle1.pi)  # 输出 3.14
print(circle2.pi)  # 输出 3.14

print(circle1.radius)  # 输出 5
print(circle2.radius)  # 输出 10

三、类的方法

类的方法主要有实例方法、类方法和静态方法。

#实例方法:实例方法是最常见的方法,第一个参数必须是 self,代表调用该方法的实例对象。通过 self,可以访问和操作实例的属性。

示例:

 class Dog:
        def __init__(self, name):
            self.name = name

        def bark(self):  # 这是一个实例方法
            print(f"{self.name} 在叫")

 调用类方法:

    my_dog = Dog("小黄")
    my_dog.bark()  

#类方法:使用 @classmethod 装饰器定义,第一个参数通常是 cls,代表类本身。类方法可以直接通过类名调用,也可以通过实例调用,但无论哪种方式,第一个参数始终是类本身。

示例:

 class Cat:
        count = 0

        def __init__(self):
            Cat.count += 1

        @classmethod
        def get_count(cls):  # 这是一个类方法
            print(f"当前猫的数量是:{cls.count}")

关于解释器的说明:

调用类方法: 

  Cat.get_count()

静态方法:使用 @staticmethod 装饰器定义,不需要传递 self 或 cls 参数。静态方法与类或实例的状态无关,只是一个普通的函数,放在类中是为了组织代码的逻辑。

示例:

class Bird:
        @staticmethod
        def fly_info():  # 这是一个静态方法
            print("鸟儿可以飞翔")

调用静态方法: 

 Bird.fly_info()  

四、构造方法(__init__ 方法)

__init__ 方法是 Python 类中的一个特殊方法,也称为构造方法。当我们创建一个类的实例(对象)时,这个方法会被自动调用。

例如:

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

    def introduce(self):
        print(f"我叫{self.name},今年{self.age}岁。")

# 创建 Person 类的实例
person1 = Person("张三", 25)
person1.introduce()

五、继承

继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。

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

    def move(self):
        print(f"{self.name} 在移动")

class Dog(Animal):
    def bark(self):
        print(f"{self.name} 在叫")

my_dog = Dog("小黄")
my_dog.move()  # 继承自父类的方法
my_dog.bark()  # 子类自己的方法

在上述示例中,Dog 类继承自 Animal 类。Dog 类自动拥有了 Animal 类的 __init__ 方法和 move 方法,同时还可以定义自己特有的 bark 方法。

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值