Python学习笔记--创建类:高级内容

来源:互联网 发布:jav网络机顶盒v6 编辑:程序博客网 时间:2024/05/18 01:21

本文用简单的例子演示了python中类变量的定义与使用,类的方法的重复利用、继承和重写(覆盖)。

类变量

定义类变量

media.py:

class Movie:    VALID_RATINGS = ["G","PG","PG-13","R"]

entainment_enter.py:

print(media.Movie.VALID_RATINGS)

运行entainment_enter.py显示:

['G', 'PG', 'PG-13', 'R']

类变量__doc__,__name__,__module__

media.py:

class Movie:    """This class provides a way to store movie related information"""        VALID_RATINGS = ["G","PG","PG-13","R"]

entainment_enter.py:

print(media.Movie.__doc__)print(media.Movie.__name__)print(media.Movie.__module__)

运行entainment_enter.py显示:

This class provides a way to store movie related informationMoviemedia

继承

class Parent():    def __init__(self, first_name, eye_color):        print("Parent Constructor Called")        self.first_name = first_name        self.eye_color = eye_colorclass Child(Parent):    def __init__(self, first_name, eye_color, number_of_toys):        print("Child Constructor Called")        Parent.__init__(self, first_name, eye_color)        self.number_of_toys = number_of_toysbilly_cyrus = Parent("billy","blue")print(billy_cyrus.first_name)miley_cyrus = Child("miley","blue",5)print(miley_cyrus.first_name)print(miley_cyrus.number_of_toys)

运行后显示:

Parent Constructor CalledbillyChild Constructor CalledParent Constructor Calledmiley5

重复利用方法:

class Parent():    def __init__(self, first_name, eye_color):        print("Parent Constructor Called")        self.first_name = first_name        self.eye_color = eye_color    def show_info(self):        print("First Name - "+self.first_name)        print("Eye Color - "+self.eye_color)class Child(Parent):    def __init__(self, first_name, eye_color, number_of_toys):        print("Child Constructor Called")        Parent.__init__(self, first_name, eye_color)        self.number_of_toys = number_of_toysbilly_cyrus = Parent("billy","blue")miley_cyrus = Child("miley","blue",5)miley_cyrus.show_info()

运行后显示:

Parent Constructor CalledChild Constructor CalledParent Constructor CalledFirst Name - mileyEye Color - blue

重写(覆盖)方法-Method Overriding

class Parent():    def __init__(self, first_name, eye_color):        print("Parent Constructor Called")        self.first_name = first_name        self.eye_color = eye_color    def show_info(self):        print("First Name - "+self.first_name)        print("Eye Color - "+self.eye_color)class Child(Parent):    def __init__(self, first_name, eye_color, number_of_toys):        print("Child Constructor Called")        Parent.__init__(self, first_name, eye_color)        self.number_of_toys = number_of_toys    def show_info(self):        print("First Name - "+self.first_name)        print("Eye Color - "+self.eye_color)        print("Number of toys - "+str(self.number_of_toys))billy_cyrus = Parent("billy","blue")miley_cyrus = Child("miley","blue",5)miley_cyrus.show_info()

运行后显示:

Parent Constructor CalledChild Constructor CalledParent Constructor CalledFirst Name - mileyEye Color - blueNumber of toys - 5

tips:

  • Lists vs. Arrays:http://www.wired.com/2011/08/python-notes-lists-vs-arrays/
  • 预定义变量 __name__ 和 __module__ 的文档:http://www2.lib.uchicago.edu/keith/courses/python/class/5/,
    https://docs.python.org/2/reference/datamodel.html
原创粉丝点击