使用面向对象思想,利用封装和继承书写代码
class Student:
def __init__(self,name,sno,age,sex):
self.name = name
self.sno = sno
self.age = age
self.sex = sex
# 学习
def study(self,subject):
print(f"{self.name}学习的内容为:{subject}")
class PrimaryStudent(Student):
def fight(self):
print(f"{self.name}在外面打架")
class MiddleStudent(Student):
def amativeness(self):
print(f"{self.name}正在谈恋爱")
class CollegeStudent(Student):
def study(self):
print("逃课中。。。。。。。")
def play_game(self):
print(f"{self.name}在打英雄联盟")
# 小学生对象
ps = PrimaryStudent("tom","20200601",18,"男")
ps.study("语文 数学 英语")
ps.fight()
# 中学生对象
ms = MiddleStudent("the bug","20200602",19,"女")
ms.study("语数外 生物化 史地政")
ms.amativeness()
# 大学生对象
cs = CollegeStudent("the shy","20200603",20,"男")
cs.study()
cs.play_game()
class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
class Dog(Animal):
def __str__(self):
return f"""
宠物狗:
暱称是:{self.name}
年龄是:{self.age}
性别:{self.sex}
会两条腿行走的才艺
"""
class Cat(Animal):
def __str__(self):
return f"""
宠物猫:
暱称是:{self.name}
年龄是:{self.age}
性别:{self.sex}
会装死的才艺
"""
class Person:
def __init__(self,host,guest):
self.host = host
self.guest = guest
def show(self):
print(f"主人{self.host}向客人{self.guest}介绍自己家的宠物猫,宠物狗")
dog = Dog("贝贝",2,"雌")
cat = Cat("花花",2,"雄")
person = Person("杨夫人","李小姐")
person.show()
print(dog,cat)
3、设计⼀个Person,包含姓名、年龄和性别三个私有成员属性,另外Person类还包含males和females两个私有类属性,⽤来记录男⽣和⼥⽣的数量, 可以通过number_male和number_female两个公有类⽅法获取males和females两个私有类属性的值。⾃⼰完成Person类的设计,然后实例化多个Person的对象, 分别统计男⼥的⼈数
class Person:
__males = 0 # 私有类属性
__females = 0 # 私有类属性
def __init__(self,name,age,sex):
self.__name = name
self.__age = age
self.__sex = sex
if self.__sex == '男':
self.__class__.__males += 1 # __class__ 当前对象所处的类,然后调用类属性
else:
self.__class__.__females += 1
@classmethod # 类方法装饰器
def number_males(cls):
print(cls.__males)
@classmethod
def number_females(cls):
print(cls.__females)
# 析构函数,删除,对应减一
def __del__(self):
if self.__sex == '男':
self.__class__.__males -= 1
else:
self.__class__.__females -= 1
p1 = Person('tom',18,'男')
p2 = Person('tom1',17,'女')
p3 = Person('tom2',19,'男')
p4 = Person('tom3',18,'男')
p5 = Person('tom4',18,'女')
p6 = Person('tom5',17,'男')
p7 = Person('tom5',20,'女')
p8 = Person('tom6',18,'男')
p9 = Person('tom7',21,'男')
Person.number_males()
Person.number_females()
# -*- coding: utf-8 -*-
# @File : 工资管理系统.py
# 描述 :
# @Time : 2020/6/6 13:00
# @Author : 崔
# @versions : 1.0
class Staff:
def __init__(self,id,name):
self.__id = id
self.__name = name
self.wage = 0
@property
def get_name(self):
return self.name
@get_name.setter # 可写属性 先定义读 才能定义写
def set_name(self):
return self.name
@property # 可读
def get_id(self):
return self.id
def Calculate_salary(self):
return self.wage
class Worker(Staff):
def __init__(self,id,name,hour_num,hour_wage):
"""
:param id: 工号
:param name: 姓名
:param hour_num: 工作小时数
:param hour_wage: 时薪
"""
super().__init__(id,name)
self.hour_num = hour_num
self.hour_wage = hour_wage
def Calculate_salary(self):
self.wage = self.hour_num * self.hour_wage
return self.wage
class Salesman(Staff):
def __init__(self,id,name,sales,sales_percentage):
"""
:param sales: 销售额
:param sales_percentage: 提成比例,小数
"""
super().__init__(id,name)
self.sales = sales
self.sales_percentage = sales_percentage
def Calculate_salary(self):
self.wage = self.sales * self.sales_percentage
return self.wage
class Manager(Staff):
def __init__(self,id,name,month_money):
"""
:param month_money: 月薪
"""
super().__init__(id,name)
self.month_money = month_money
def Calculate_salary(self):
self.wage = self.month_money
return self.wage
class Salemanger(Staff):
def __init__(self,id,name,month_money,sales,sales_percentage):
"""
:param month_money: 月薪
:param sales: 销售额
:param sales_percentage: 提成,小数
"""
super().__init__(id,name)
self.month_money = month_money
self.sales = sales
self.sales_percentage = sales_percentage
def Calculate_salary(self):
self.wage = self.sales * self.sales_percentage + self.month_money
return self.wage
worker = Worker("20200601","小明",10,300)
salesman = Salesman("20200701","Jack",8000,0.15)
manager = Manager("20200801","Tom",10000)
salemanger = Salemanger("20201111","shy",6000,20000,0.2)
m1 = worker.Calculate_salary()
m2 = salesman.Calculate_salary()
m3 = manager.Calculate_salary()
m4 = salemanger.Calculate_salary()
print(f"{worker.name}:{m1}\n{salesman.name}:{m2}\n{manager.name}:{m3}\n{salemanger.name}:{m4}")