Python基础学习简记--类与对象(Day13)

mac2025-12-05  7

Python基础学习简记–类与对象(Day13)

python是一种面向对象的语言,我们来学习python的类与对象。 类提供了一种组合数据和功能的方法。类与对象的关系就可以说是整体和个体的关系。个体具有整体的一般性,个体又有自己独有的特殊性。

1、类的定义

使用Class关键字来新定义一个类,类名一般约定用大写字母开头,函数则用小写字母开头,以做区分

class ClassName: <statement-1> . . . <statement-N>

2、类对象

类对象支持两种操作:属性引用和实例化

class NumberA: """An example class""" a = 222 def sum(self): return 'hello world' print(NumberA.a) #类对象的属性引用,返回一个数字 print(NumberA.f) #类对象的属性引用,返回一个函数 #222 #<function NumberA.f at 0x0000019DFE6532F0> n = NumberA() #类对象的实例化 print(n) #<__main__.NumberA object at 0x00000151B0938A20>

3、类的实例化与构造函数__init__()

实例一般有不一样的初始化参数,我们使用构造函数__init__()来实现。

class Person(object): def __init__(self, name, age, height): self.name = name self.age = age self.height = height xiaoming = Person('xiaoming', 18, 165) xiaozhang = Person('xiaozhang', 20, 172) print(xiaoming.__dict__) print(xiaozhang.__dict__) #{'name': 'xiaoming', 'age': 18, 'height': 165} #{'name': 'xiaozhang', 'age': 20, 'height': 172}

4、类属性、实例属性

类属性:类内定义的属性为类属性,该类的所有实例都能共享类属性。 实例属性:实例内定义的属性为实例属性,一般有__init__()函数初始化而来,实例属性只在该实例内部使用。

class Score(): math = "95,类属性" english = "80,类属性" a = Score() a.math = "90,实例属性" print(a.math) print(Score.math) print(a.english) print(a.__dict__) #90,实例属性 #95,类属性 #80,类属性 #{'math': '90,实例属性'} """ 对a.math的赋值并不能直接修改类Score中的math属性,这个语句的作用其实是在实例a中 定义了一个新的实例属性math,调用它的方式为 实例名.属性名,也就是a.math 类中属性的调用方式为 实例名.属性名,也就是Score.math 实例中其实是没有a.english属性的,而我们调用a.english却得到了结果,这其实是因为当实例中没有a.english时,它会 自动去实例的类中查找是否有该属性,如果有,则返回类属性的值,如果没有才会报错,正如我们得到的结果‘80,类属性’, 对__dict__的打印也证明了实例中只有math属性。当然通常情况我们更实际的是用3中的构造函数来初始化实例属性。 """

5、类方法、实例方法、静态方法

class Myclass: # 实例方法 def instancemethod(self): pass # 静态方法 @staticmethod def staticmethod(): pass # 类方法 @classmethod def classmethod(cls): pass

实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。 实例方法,第一个参数必须要默认传实例对象,一般习惯用self。 静态方法,参数没有要求。 类方法,第一个参数必须要默认传类,一般习惯用cls。

6、继承

python的继承构造新类的方式。

class Person(object): def __init__(self, name, age): self.name = name self.age = age self.weight = 'weight' class Chinese(Person): def __init__(self, name, age, language): # 先继承,再重构 Person.__init__(self, name, age) # 调用父类的构造方法 #super(Chinese,self).__init__(name,age) #或者使用super().__init__() self.language = language # 定义类的本身属性

Python 虽然支持多继承的形式,但我们一般不使用多继承,因为容易引起混乱。

7、私有

在 Python 中定义私有变量的方式为在变量名或函数名前加上“__”两个下划线。

class MyClass: __value = 222 # 私有变量 name = "min" # 公开变量 def __f(self): #私有函数 pass

8、参考文献

类与对象的内容很细致也很多,我们只是简单介绍一下基本知识,了解更多请查看参考文献。 https://docs.python.org/zh-cn/3/tutorial/classes.html https://blog.csdn.net/LSGO_MYP/article/details/102292580 https://www.bilibili.com/video/av4050443

最新回复(0)