# 定义一个类
class People:
# 定义基本属性
name = 'default'
age = 0
# 定义私有属性
__sex = 'default'
# 定义构造方法,self代表类的实例,而非类,类的方法中第一个参数都要是self
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.__sex = sex
# 定义私有方法
def __is_man(self):
if self.__sex == 'man':
return 'he'
else:
return 'she'
def describe(self):
print('{} is {} years old and {} is a {}!'.format(self.name, self.age, self.__is_man(), self.__sex))
# 定义一个子类继承People类
class Student(People):
grade = 0
__sex = 'default'
# 构造函数
def __init__(self, name, age, sex, grade):
# 调用父类的构造函数
People.__init__(self, name, age, sex)
self.grade = grade
self.__sex =sex
def __is_man(self):
if self.__sex == 'man':
return 'he'
else:
return 'she'
# 重写父类方法
def describe(self):
print('{} is {} years old and {} got {}!'.format(self.name, self.age, self.__is_man(), self.grade))
# 实例化
p = People('Berry', 18, 'man')
# 调用实例变量
print(p.name) # Berry
# 调用方法
p.describe()
# Berry is 18 years old and he is a man!
# 实例化父类
p = People('Berry', 18, 'man')
# 调用实例变量
print(p.name) # Berry
# 调用方法
p.describe()
# Berry is 18 years old and he is a man!
# 实例化子类
stu = Student('Sim', 12, 'man', 100)
stu.describe()
# Sim is 12 years old and he got 100!
Python同样有限的支持多继承形式。需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。