注:个人笔记,并不详细,仅供参考。
类是一类事物的统称,比如学生。对象就是类的实例化。
类有属性(变量),比如学生的姓名、性别、年龄、成绩等,也就是编程里面的变量。
类有方法(函数),比如学生的上课、下课等,也就是编程里面的函数。
类是一种数据结构,我们可以用它来定义对象,对象把数据值和行为特性融合在一起。Python 使用class
关键字来创建类:通常类名的第一个字母大写,推荐使用驼峰式命名法,单词首字母均大写。类有属性(变量)和方法(动作,函数)组成。
class ClassName(bases):
'class documentation string' #'类文档字符串'
class_suite # 类体
__init__()
是类的实例(对象)创建后第一个被调用的方法,通常被用来进行对象中属性(变量)的初始化。设置实例的属性可以在实例创建后任意时间进行,但是通常情况下优先在__init__()
方法中实现。
class Stu():
def __init__(self, name, sex, age, score):
self.name = name
self.sex = sex
self.age = age
self.score = score
stu1 = Stu(name = "ZS", sex = True, age = 24, score = 59.9)
print(f"{stu1.name} 的成绩是{stu1.score}")
方法仅仅是类内部定义的函数,方法只有在其所属的类拥有实例时,才能被调用;任何一个方法定义中的第一个参数都是变量self,它表示调用此方法的实例对象就是自己。
类中的方法,也就是类中定义的函数,这个函数第一个参数永远是self,表示自己。
import time
class Stu():
def __init__(self, name, sex, age, score):
self.name = name
self.sex = sex
self.age = age
self.score = score
def getSocre(self):
print(f"{self.name} 的成绩是{self.score}")
def goodGoodStudy(self):
print("好好学习中...")
time.sleep(10)
self.score += 0.1
stu1 = Stu(name = "ZS", sex = True, age = 24, score = 59.9)
stu2 = Stu(name = "HMM", sex = True, age = 24, score = 89.9)
stu2.getSocre()
stu2.goodGoodStudy()
stu2.getSocre()
继承描述了基类(祖先)的属性如何遗传给派生类(子孙),子类可以继承它的基类的任何属性,不管是数据属性还是方法。
import time
class Kid():
def __init__(self, name = "", sex = "", age = ""):
self.name = name
self.age = age
self.sex = sex
def play(self):
print("玩游戏中...")
class Stu(Kid):
def __init__(self,name = "", sex = "", age = "", score = ""):
Kid.__init__(self, name, sex, age)
self.score = score
def get_score(self):
print(f"{self.name} 的成绩是{self.score}")
def good_good_study(self):
print("好好学习中...")
time.sleep(10)
self.score += 0.1
stu1 = Stu(name = "ZS", sex = True, age = 24, score = 59.9)
stu2 = Stu(name = "LL", sex = True, age = 25, score = 49.9)
stu3 = Stu(name = "HMM", sex = True, age = 23, score = 99.9)
stu4 = Stu(name = "LH", sex = True, age = 24, score = 79.9)
stu1.play()
如果子类中有和父类同名的方法,父类方法将被覆盖;如果需要访问父类的方法,则要调用一个未绑定的父类方法,明确给出子类的实例。
import time
class Kid():
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def play(self):
print("玩游戏中...")
class Stu(Kid):
def __init__(self, name, sex, age, score):
Kid.__init__(self, name, sex, age)
self.score = score
def getSocre(self):
print(f"{self.name} 的成绩是{self.score}")
def goodGoodStudy(self):
print("好好学习中...")
time.sleep(10)
self.score += 0.1
def play(self):
print("玩王者荣耀中...")
time.sleep(2)
self.score -= 10
stu1 = Stu(name = "ZS", sex = True, age = 24, score = 59.9)
stu2 = Stu(name = "HMM", sex = True, age = 24, score = 89.9)
stu2.getSocre()
stu2.play()
stu2.getSocre()
stu2.goodGoodStudy()
stu2.goodGoodStudy()
stu2.getSocre()
stu2.play()
stu2.getSocre()
Python 允许多重继承,即一个类可以是多个父类的子类,子类可以拥有所有父类的属性。
class A():
def a():
print("This is function A!")
class B():
def b():
print("This is function B!")
class C(A, B):
pass
C.a()
C.b()
函数 | 作用 |
---|---|
issubclass() | 判断一个类是另一个类的子类或子孙类 |
isinstance() | 判定一个对象是否是另一个给定类的实例 |
hasattr() | 判断一个对象是否有一个特定的属性 |
getattr() | 获得一个对象的属性值 |
setattr() | 设置一个对象的属性 |
delattr() | 删除一个对象的属性 |
魔法函数是系统自带的,会在“恰当”的时候自动调用。
class Test():
def __init__(self):
print("Function __init__ is called!")
def __str__(self):
return "Why print(self)?"
def __call__(self):
print("Why call me like Function?")
t = Test()
print(t)
t()
Python 为类元素(属性和方法)的私有性提供初步的形式,由双下划线开始的属性在运行时被“混淆”,所以直接访问是不允许的。
import time
class Stu():
def __init__(self, name, sex, age, score):
self.name = name
self.sex = sex
self.age = age
self.__score = score
def getSocre(self):
print(f"{self.name} 的成绩是{self.__score}")
def goodGoodStudy(self):
print("好好学习中...")
time.sleep(10)
self.__score += 0.1
stu1 = Stu(name = "ZS", sex = True, age = 24, score = 59.9)
stu2 = Stu(name = "HMM", sex = True, age = 24, score = 89.9)
stu2.getSocre()