Python的面向对象编程和java很像
# - Tutorial 5
# - 2020-2-5
# - Johan
# - 题目:
# 1、面向对象编程
# 2、类的继承
"""
多继承演示:
People
|
V
Student Player
| |
-------------
|
V
Teammate
重要点:
1、类的格式
2、私有、公有属性、方法的格式
3、构造方法、带参构造方法格式、引用
4、类的继承、多继承
5、方法重构
6、字符串格式控制
"""
# People类
class People:
# 私有属性,前面加__,私有方法同理
__age = 0
__name = ''
# 公有属性不需要加,公有方法同理
p_id = 1
# 构造方法
def __init__(self):
self.__age = 10
self.__name = 'Johan'
self.p_id = 1
# 带参构造方法
def __init__(self, age, name, p_id):
self.__age = age
self.__name = name
self.p_id = p_id
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_age(self, age):
self.__age = age
def get_age(self):
return self.__age
# Student类,继承自People类
class Student(People):
student_id = '00000000'
def __init__(self):
People.__init__(self, 13, 'Alex', 11)
self.student_id = '20110712'
def __init__(self, age, name, stu_id, p_id):
People.__init__(self, age, name, p_id)
self.student_id = stu_id
def reading(self):
print("[%s]I can read." % self.get_name()) # 另一种字符串格式控制
# Player类
class Player:
team = 'team_1'
def __init__(self, team):
self.team = team
def playing(self):
print("I can play.")
# Teammate类,继承自Student和Player类
class Teammate(Student, Player):
def __init__(self):
Student.__init__(self, 12, 'Kim', '00000002', 3)
Player.__init__(self, 'Ubuntu')
def __init__(self, age, name, stu_id, p_id, team):
Student.__init__(self, age, name, stu_id, p_id)
Player.__init__(self, team)
# Main部分
boy = Teammate(12, 'Sheldon', '20110303', 2, 'RedHat')
print("My name is %s, %d-year-old" % (boy.get_name(), boy.get_age()))
boy.reading()
boy.playing()
运行结果;
面向对象还是那样纠结啊