# class 中的 init () 函数

\quad 在 python 中创建一个 class 后,通常会创建一个 __init__(self) 的函数。之后我们在程序中,并且。只有涉及到这个 class,那么 __init__(self) 函数就会默认执行。

class Person():
    def __init__(self):
        self.name = '百三'
        print('%s是个好人' %self.name)
    def eat(self):
        print('%s要吃饭' %self.name)
a = Person()
------
百三是个好人

# class 中的全局变量

\quad 在同一个 class 下创建函数有一个很大的好处:这些函数可以共用一批全局变量。这些全局变量只要我们在 __init__() 函数中利用 self.xxx = xxx 定义了,并且在后续 class 中定义的函数包含一个 self 参数即可。

class Person():
    def __init__(self, name, identity):
        self.name = name
        self.identity = identity
    def who(self):
        print('%s是一名%s' %(self.name, self.identity))
    def eat(self):
        print('%s要吃饭' %self.name)
a = Person('百三', '学生')
a.who()
a.eat()
------
百三是一名学生
百三要吃饭

# 子类继承了父类的所有变量和函数

\quad 可以子类可以利用 super(xxx, self).__init__() 的方法集成父类的全部变量和函数。继承的变量和函数也可以改写,这种改写仅改写子类,不影响父类。

class Person():
    def __init__(self, name, identity):
        self.name = name
        self.identity = identity
    def who(self):
        print('%s是一名%s' %(self.name, self.identity))
    def eat(self):
        print('%s要吃饭' %self.name)
class Student(Person):
    def __init__(self, name, identity, school, score):
        super(Student, self).__init__(name, identity) # 使用父类的初始化方法来初始化子类
        self.school = school
        self.score = score
    def who(self): # 对父类的 who 函数进行重写
        print('%s是一名%s的%s,成绩为%s' %(self.name, self.school, self.identity, self.score))
per = Person('百三', '学生')
stu = Student('百三', '学生', '中山大学', '87')
stu.eat()
stu.who()
per.who()
------
百三要吃饭
百三是一名中山大学的学生,成绩为87
百三是一名学生