1.聲明?個電腦類: 屬性:品牌、顏?、內存?小 方法:打游戲、寫代碼、看視頻
a.創建電腦類的對象,然后通過對象點的?方式獲取、修改、添加和刪除它的屬性
b.通過attr相關?方法去獲取、修改、添加和刪除它的屬性
"""______lxh______"""
class Computer:
__slots__ = ('brand', 'color', 'memory', 'size')
def __init__(self, brand, color, memory):
self.brand = brand
self.color = color
self.memory = memory
@staticmethod
def p_game():
print('打游戲!')
@staticmethod
def w_code():
print('寫代碼!')
@staticmethod
def w_video():
print('看視頻!')
# .相關方法
computer1 = Computer('Lenovo', 'back', '512 GB')
print(computer1.brand, computer1.color, computer1.memory) # Lenovo back 512 GB
computer1.color = 'red' # 改
print(computer1.color) # red
computer1.size = '16寸' # 加
print(computer1.size) # 16寸
del computer1.brand # 刪
# print(computer1.brand) # AttributeError: brand
# b.attr相關?方法
computer2 = Computer('Huawei', 'gray', '1T')
print(getattr(computer2, 'brand')) # 查
print(getattr(computer2, 'color'))
print(getattr(computer2, 'memory')) # Huawei gray 1T
setattr(computer2, 'brand', 'Lenovo') # 改
print(getattr(computer2, 'brand')) # Lenovo
delattr(computer2, 'memory') # 刪
print(getattr(computer2, 'memory', '0B')) # 0B
setattr(computer2, 'size', '19寸') # 加
print(getattr(computer2, 'size')) # 19寸
2.聲明?個人的類和狗的類:
狗的屬性:名字、顏?色、年年齡
狗的?方法:叫喚
人的屬性:名字、年年齡、狗
人的?方法:遛狗
a.創建?人的對象?小明,讓他擁有?一條狗?大?黃,然后讓?小明去遛?大?黃
class Dog:
__slots__ = ('name', 'color', 'age')
def __init__(self, name: str, color: str, age: int):
self.name = name
self.color = color
self.age = age
def bark(self):
print('%s: 汪汪汪!' % self.name)
class Person:
__slots__ = ('name', 'age', 'dog')
def __init__(self, name: str, age=0, dog=None):
self.name = name
self.age = age
self.dog = dog
def walk_dog(self):
if self.dog:
print('%s遛%s' % (self.name, self.dog.name))
dog1.bark()
else:
print('沒狗!')
dog1 = Dog('大黃', 'yellow', 3)
person1 = Person('小明', 20, dog1)
person1.walk_dog()
# 小明遛大黃
# 大黃: 汪汪汪!
3.聲明?一個圓類,自己確定有哪些屬性和方法
from math import pi
class Circle:
__slots__ = ('radius', 'girth', 'area')
def __init__(self, radius):
self.radius = radius
self.area = pi * radius ** 2
def c_girth(self):
return 2 * pi * self.radius
def c_area(self):
return pi * self.radius ** 2
circle1 = Circle(5)
print(circle1.c_girth()) # 周長 31.41592653589793
print(circle1.c_area()) # 面積 78.53981633974483
4.創建?一個學?生類:
屬性:姓名,年齡,學號
方法:答到,展示學?生信息
創建?一個班級類:
屬性:學?生,班級名
方法:添加學?生,刪除學生,點名, 求班上學生的平均年齡
class Student:
__slots__ = ('name', 'age', 'sno', 'sex', 'class_n')
def __init__(self, name=None, age=0, sno=None):
self.name = name
self.age = age
self.sno = sno
def replied(self):
print('%s: 到!' % self.name) # 答道
def message(self):
print(self.name, self.sno, self.age) # 打印學生信息
class Class:
__slots__ = ('stu', 'c_name')
def __init__(self, c_name, *stu):
self.stu = list(stu)
self.c_name = c_name
def add_stu(self, student): # 添加學生
self.stu.append(student)
def del_stu(self, student): # 刪除學生
self.stu.remove(student)
def r_call(self): # 點名
for stu in self.stu:
print(stu.name)
def av_age(self): # 平均年齡
all_age = 0
for age in self.stu:
all_age += age.age
print(all_age / len(self.stu))
def main():
stu1 = Student('小明', age=19)
py1904 = Class('py1904', stu1)
stu2 = Student('小花', age=20)
py1904.add_stu(stu2)
py1904.r_call() # 小明 小花
py1904.av_age() # 19.5
if __name__ == '__main__':
main()