Python 类的介绍

目录


 1.python类的简单介绍

    在Python中的,类时一种面向对象编程的机制,用于描述具有相同属性的和方法的对象的集合。类定义了一组属性和方法,可以用来创建对象的模板。类定义了一组属性和方法,可以用来创建对象的模板。类可以看作一种自定义的数据类型,它可以包含多个实例,每个实例都具有相同的属性和方法。

       类的定义通常包括类名、属性和方法在类定义中,我们可以定义类属性、类方法、实例属性和实例方法等。类属性是整个类的属性,可以通过类名来访问。实例属性是属于实例的属性,只能通过实例名来访问。类方法和实例方法是类中的函数,可以用来执行特定的操作。

以下是一个简单的类定义示例:

class Person:
    # 类属性
    num_of_persons = 0

    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age
        Person.num_of_persons += 1

    # 实例方法
    def say_hello(self):
        print("Hello, my name is", self.name)

    # 类方法
    @classmethod
    def get_num_of_persons(cls):
        return cls.num_of_persons


在上述示例中,我们定义了一个名为Person的类,它具有一个类属性num_of_persons,表示创建的Person实例的数量。在构造方法__init__()中,我们定义了两个实例属性name和age,并将类属性num_of_persons加1。实例方法say_hello()用于打印一个问候语,其中包含实例属性name的值。类方法get_num_of_persons()返回类属性num_of_persons的值。

使用该类,我们可以创建多个Person的实例,并访问它们的属性和方法。例如,以下代码创建了两个Person实例p1和p2,并调用了它们的实例方法say_hello():

p1 = Person(“Alice”, 25)
p2 = Person(“Bob”, 30)
p1.say_hello()
p2.say_hello()
输出结果为:

Hello, my name is Alice
Hello, my name is Bob
我们还可以通过类方法get_num_of_persons()来获取Person实例的数量。例如,以下代码输出了当前创建的Person实例的数量:

print(Person.get_num_of_persons())
输出结果为:2

2.self和cls参数介绍

在Python中,self和cls都是特殊的参数,用于表示实例和类本身。

self是一个表示实例本身的参数,用于在实例方法中访问实例属性、调用其他实例方法等。在实例方法中,self参数会自动绑定到调用该方法的实例上。

cls是一个表示类本身的参数,用于在类方法中访问类属性、调用其他类方法等。在类方法中,cls参数会自动绑定到该类本身上。

例如,在以下示例中,我们定义了一个名为Person的类,它具有一个类属性num_of_persons,表示创建的Person实例的数量。在构造方法__init__()中,我们定义了两个实例属性name和age,并将类属性num_of_persons加1。实例方法say_hello()用于打印一个问候语,其中包含实例属性name的值。类方法get_num_of_persons()返回类属性num_of_persons的值。

class Person:
    num_of_persons = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.num_of_persons += 1

    def say_hello(self):
        print("Hello, my name is", self.name)

    @classmethod
    def get_num_of_persons(cls):
        return cls.num_of_persons

p1 = Person("Alice", 20)
p2 = Person("Bob", 25)
p1.say_hello()
print("Number of persons:", Person.get_num_of_persons())

输出结果为:

Hello, my name is Alice
Number of persons: 2

可以看到,我们在构造方法__init__()中使用了self参数来访问实例属性name和age,以及cls参数来访问类属性num_of_persons。在实例方法say_hello()中,我们也使用了self参数来访问实例属性name。在类方法get_num_of_persons()中,我们使用了cls参数来访问类属性num_of_persons,并返回其值。

需要注意的是,虽然self和cls参数名并不是固定的,但是建议使用它们来表示实例和类本身,以便与Python的惯例保持一致。另外,类方法必须使用@classmethod装饰器来标识它是一个类方法,而实例方法不需要。

总之,self和cls都是特殊的参数,用于表示实例和类本身。self参数在实例方法中自动绑定到调用该方法的实例上,而cls参数在类方法中自动绑定到该类本身上。

3.一些简单代码实例

(1)定义一个简单的类

class MyClass:
    def __init__(self, name):
        self.name = name
    
    def say_hello(self):
        print(f"Hello, {self.name}!")

解释:这是一个简单的类,其中包含了一个构造函数 __init__ 和一个方法 say_hello。构造函数用于初始化类的属性,而方法 say_hello 用于输出一个问候语。

(2)继承一个父类

class MyChildClass(MyClass):
    def say_goodbye(self):
        print(f"Goodbye, {self.name}!")

解释:这是一个继承自 MyClass 的子类 MyChildClass,它新增了一个方法 say_goodbye。子类可以继承父类的属性和方法,并且还可以新增自己的属性和方法。

(3)使用类的属性和方法

obj = MyClass("Alice")
obj.say_hello()

解释:这是使用类的属性和方法的代码示例。首先创建了一个 MyClass 的实例 obj,并将其名字设置为 “Alice”。然后调用了 say_hello 方法,输出了一个问候语。

(4)使用类的继承和多态特性

obj1 = MyClass("Alice")
obj2 = MyChildClass("Bob")
for obj in [obj1, obj2]:
    obj.say_hello()
    if isinstance(obj, MyChildClass):
        obj.say_goodbye()

解释:这是一个使用类的继承和多态特性的代码示例。首先创建了两个实例 obj1 和 obj2,分别是 MyClass 和 MyChildClass 的实例。然后使用一个循环遍历这两个实例,并调用它们的 say_hello 方法。在这个循环中,还使用了 isinstance 函数来判断当前实例是否是 MyChildClass 类型的,如果是,则调用它的 say_goodbye 方法。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年8月17日
下一篇 2023年8月17日

相关推荐