Python学习笔记之类(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012561176/article/details/81981035

创建类和使用类

1、创建类

(1)、首先,附上一个简单的代码,创建一个test.py,如下所示:

class MusicInfo():
    """创建一个音乐信息类"""
    def __init__(self,author,music,album):
        """初始化属性author:作者,music:音乐名称,album:专辑名称"""
        self.author = author;
        self.music = music;
        self.album = album;
    
    def listen(self):
        print("you listen to the music:" + self.author + "'s" + self.music);
		
    def fromAlbum(self):
        print("the music:" + self.music + "is come from the album:" + self.album);
		
musicInfo = MusicInfo('林子祥','每一个晚上','祥情廿载');
print(musicInfo.author + "的一首歌:" + musicInfo.music + ",很好听,来自于专辑:" + musicInfo.album);

代码解析(2)-(5):

(2)、在Python中,首字母大写的名称叫类,并用关键字class表明这是一个类,如上面第一行代码中,这个MusicInfo类定义中的括号是空的,我们要从空白创建这个类,其中后面一行为文档字符串,即对这个类的相关功能做个简单的描述。

(3)、__init__()方法,类中的函数称为方法;在前面学到的有关函数的一切都适用于方法,唯一重要的是调用方式跟函数有点区别。__init__()是一个特殊的方法,就如上面的代码,其中根据MusicInfo类创建一个实例对象的时候,Python都会自动运行它。

注:在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突,写错的话将会变成一个普通方法,在创建实例的时候就不会自动运行这个方法了。通常一开始写代码的时候稍微不注意就会报Python TypeError: object() takes no parameters错误,这个错误是因为把 __init__() 方法写成只有一个下划线的 _init_()方法了,后面实例化的时候又把属性传递过去了,导致出现问题。

(4)、方法__init__()定义成了包含四个形参,分别为self,author,music,album,其中self不能缺少,而且必须写在其他形参的开头。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 上面代码中我们创建MusicInfo的实例的时候,将会调用方法__init__(),self自动传递,我们只需要对后面的author,music,album形参传递值即可。

(5)、以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量,首先__init__()方法中self.author = author获取存储在形参author中的值,并将其存储到变量author中,然后该变量被关联到当前创建的实例。后面实例化MusicInfo类之后,得到一个实例musicInfo,就可以直接用实例.属性来取出属性值,即上面代码中的musicInfo.author取出作者名称。其中类中的其他方法带了个self参数,就可以用这个参数来得到实例化后的属性值。

运行后如下图所示:

2、根据类创建实例,就如上面的示例代码一样,创建了一个MusicInfo类的实例,具体代码为:

musicInfo = MusicInfo('林子祥','每一个晚上','祥情廿载');

(1)、访问属性,要访问实例的属性,可使用句点表示法。如上面示例代码一样,可以使用MusicInfo类实例后的对象musicInfo来访问各自的属性,比如musicInfo.author,访问实例的属性,然后打印出来,具体代码为:

print(musicInfo.author + "的一首歌:" + musicInfo.music + ",很好听,来自于专辑:" + musicInfo.album);

(2)、调用方法,创建类的实例后,可使用句点表示法来调用类中定义的任何方法,改下上面的示例代码,具体代码如下:

musicInfo = MusicInfo('林子祥','每一个晚上','祥情廿载');
musicInfo.listen();
musicInfo.fromAlbum();

运行后如下图所示:

(3)、创建多个实例,很简单,可以根据类创建任意数量的实例:

musicInfo_one = MusicInfo('林子祥','每一个晚上','祥情廿载');
musicInfo_two = MusicInfo('林子祥','敢爱敢做','花街70号');
print(musicInfo_one.author + "的一首歌:" + musicInfo_one.music + ",很好听,来自于专辑:" + musicInfo_one.album);
print(musicInfo_two.author + "的一首歌:" + musicInfo_two.music + ",很好听,来自于专辑:" + musicInfo_two.album);

运行后如下图所示:

以上内容仅供大家学习参考,谢谢!

猜你喜欢

转载自blog.csdn.net/u012561176/article/details/81981035