面向对象的基本使用
一,封装
①定义类和使用类
class student():
def __init__(self,id,yw,sx,en):
self.id=id
self.yw=yw
self.sx=sx
self.en=en #属性用__开头代表私有属性,只能在类内部使用
def total(self):
return self.yw+self.sx+self.en
def __str__(self):
return f"学号:{self.id}\n总分:{self.total()}\n"
s1=student("12001",55,66,77)
s2=student("12002",65,69,57)
print(f"第一个学生的学号是{s1.id}")
print(f"第二个学生的语文成绩是{s2.yw}")
print(f"第二个学生的英语成绩是{s2.en}")
print(s1)
print(s2
print(type(s1))
第一个学生的学号是12001
第二个学生的语文成绩是65
第二个学生的英语成绩是57
学号:12001
总分:19
学号:12002
总分:191
<class ‘main.student’>
注解
a. __ main__ 当前脚本内的一个student类
b.def __ init__(self初始化定义方法 【self 表示‘自己】----->self.id 初始化
c.解决打印格式问题 def __ str__(self)--------return返回值,返回成字符串 --------->若没有则运行结果
<main.student object at 0x0000000002B5A6A0>
<main.student object at 0x0000000002B5A6D8>
<class ‘main.student’>
②类的继承与多态
class pet():
def __init__(self,name):
self.name=name
def __str__(self):
return f"这是一个叫{self.name}的宠物。"
def speak(self):
print(f"{self.name}在叫!")
class dog(pet):
def speak(self):
print(f"{self.name}在汪汪叫!")
class cat(pet):
def speak(self):
print(f"{self.name}在喵喵叫!")
pet1=pet("小黑") #说明 pet1在pet类中
pet1.speak() #使用 pet类中的【speak】
dog1=dog("小白")
cat1=cat("小黄")
pets=[pet1,dog1,cat1]
for p in pets:
p.speak()
小黑在叫!
小黑在叫!
小白在汪汪叫!
小黄在喵喵叫!
注解
新的定义会覆盖上一级