python类_1

一、闲言碎语

最近我在看《Python GUI Programming with Tkinter 2ed 》来学习tkinter库的使用,然后看到第四章,这章需要使用类来重构代码,使代码更加简洁高效。由于我不懂如何使用类,于是翻出旧书《Python编程从入门到实践第3版》来加深自己对于类的理解。

二、创建和使用类

写一个表示小狗的简单类 Dog,它表示的不是特定的小狗,而是任何小狗。
小狗的共同属性
-名字
-年龄
其他属性
-坐下
-打滚

1.1创建Dog类

根据约定,在 Python 中,首字母大写的名称指的是类。因为这是我们创建的全新的类,所以定义时不加括号。
类中的函数称为方法。
_ _ init _ _()是一个特殊方法,每当你根据 Dog 类创建新实例时,Python 都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免 Python 默认方法与普通方法发生名称冲突。
每个与实例相关联的方法调用都会自动传递实参 self,该实参是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
在 _ _ init _ _() 方法内定义的两个变量都有前缀 self。以 self 为前缀的变量可供类中的所有方法使用,可以通过类的任意实例来访问。self.name = name获取与形参 name 相关联的值,并将其赋给变量 name,然后该变量被关联到当前创建的实例。self.age = age 的作用与此类似。像这样可通过实例访问的变量称为属性(attribute)。
dog.py

class Dog:
    """一次模拟小狗的简单尝试"""
    
    # Dog类的属性
    def __init__(self, name, age):
        """初始化属性 name 和 age"""
        self.name = name
        self.age = age


    # Dog类的方法
    def sit(self):
        """模拟小狗收到命令时坐下"""
        print(f"{self.name} 坐下.")
    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} 打滚!")

1.2根据类创建实例

dog_example.py

from dog import Dog# 导入Dog类
"""
Dog类有两个属性
    -name名字
    -age年龄
两个方法
    -sit()坐下
    -roll_over()打滚
"""

"""创建一个Dog实例"""
# 创建Dog实例时,必须传入__init__()方法中的两个属性,否则会报错
my_dog = Dog('Willie', 6)


"""访问属性"""
# 可以通过属性获取属性对应的值
print(my_dog.name)# Willie
print(my_dog.age)# 6


"""调用方法"""
# 类似于调用函数
my_dog.sit()# Willie 坐下.
my_dog.roll_over()# Willie 打滚!


"""再创建一个Dog实例"""
your_dog = Dog('Lucy', 3)
# 访问属性
print(your_dog.name)# Lucy
print(your_dog.age)# 3
# 调用方法
your_dog.sit()# Lucy 坐下.
your_dog.roll_over()# Lucy 打滚!

你可能感兴趣的:(python)