建设广告网站需要资质吗,图书网站建设策划书,wordpress主题设置教程,个人页网址深入理解Python中的类
简介
在Python中#xff0c;类是实现面向对象编程#xff08;OOP#xff09;的主要工具。它们允许我们创建自定义的数据结构#xff0c;它包含了数据和对数据操作的方法。本文将帮助你理解Python中类的工作原理#xff0c;以及如何有效地使用它们。…深入理解Python中的类
简介
在Python中类是实现面向对象编程OOP的主要工具。它们允许我们创建自定义的数据结构它包含了数据和对数据操作的方法。本文将帮助你理解Python中类的工作原理以及如何有效地使用它们。
类的基本概念
定义一个新式类
在Python中定义一个类使用关键字class
class Person(object):# 定义两个方法def eat(self,food):print(吃, food)def sleep(self,t):print(每天至少睡,t,小时)创建实例
要使用类我们需要创建它的实例
实例对象后会在内存中分配一块空间这个空间就是实例对象的位置
tom Person()
实例多个对象
实例多个对象会在内存中分配不同的空间然后将地址引用给对象名。
a Person()
b Person()
c Person()print(a)
print(b)
print(c)
输出
__main__.MyClass object at 0x000002D374234E80
__main__.MyClass object at 0x000002D3745783D0
__main__.MyClass object at 0x000002D37433A5E0当我们创建一个类的实例时__init__方法会被自动调用接受我们传递的参数在这个例子中是我是一个实例属性。
访问属性和方法
创建实例后我们可以访问其属性和方法
tom.eat(饭)
tom.eat(海鲜)
tom.sleep(8)输出
吃 饭
吃 海鲜
每天至少睡 8 小时私有属性和方法
私有属性 私有方法 继承
Python支持类的继承允许我们创建新的类作为现有类的子类继承其属性和方法并可以添加新的属性和方法或覆盖现有的。
class SubClass(MyClass): 继承自MyClass的子类 def method(self): 覆盖了MyClass中的方法 return 调用了子类的方法
现在SubClass会继承MyClass的所有特性但method方法已经被覆盖了。
多态性
多态性是OOP的一个核心概念它允许我们编写可以与多种类型的对象一起工作的函数或方法只要这些对象都有一个公共的接口比如相同名称的方法
def call_method(obj): return obj.method()
# 即使是不同类型的对象但是只要它们都有method方法都可以使用 print(call_method(instance)) # 调用MyClass的实例 print(call_method(SubClass(42))) # 调用SubClass的实例
类和实例属性
类属性与实例属性之间有重要的区别。类属性是属于类的被所有实例共享。而实例属性仅属于特定的实例。
class DemoClass: class_attr 0 def __init__(self, value): self.instance_attr value # 创建两个实例 a DemoClass(1) b DemoClass(2) # 修改类属性会影响所有实例 DemoClass.class_attr 5 print(a.class_attr) # 输出: 5 print(b.class_attr) # 输出: 5 # 修改实例属性只影响那个特定的实例 a.instance_attr 10 print(a.instance_attr) # 输出: 10 print(b.instance_attr) # 输出: 2
魔法方法
在Python中有许多内置的方法名有特殊的意义这些方法名通常以双下划线__开始和结束。它们也被称为魔法方法或特殊方法。这些方法可以让我们重载或者定义对象的操作。
__init__() 方法
在Python中__init__方法是一个特殊的方法有时称为‘魔法方法’在创建类实例对象时被自动调用。
作用
初始化实例的属性起到一个传递参数的作用
class Myclass(object):def __init__(self,value):self.my_attribute valuedef my_method(self):return self.my_attribute# 创建一个类的实例
my_instance MyClass(10)
# 调用实例的方法
print(my_instance.my_method()) # 输出: 10
__init__方法特点 1、__init__方法不是一个构造函数它在类实例化对象后运行用来初始化实例对象属性 2、第一个参数self是实例对象的引用确保在方法内部访问实例对象的属性和其他方法
self 不是Python的关键字或强制性的它只是一个按照惯例使用的变量名。你可以使用其他变量名但强烈建议遵循这个约定因为它对于其他Python程序员来说是最易读和理解的。 3、__init__方法可以有任意数量的参数这些参数在创建类实例对象时传入。 4、__init__方法可以是空的也可以不写但通常被用来设置实例的初始化状态传参。 5、如果你有一个继承链__init__ 方法需要调用基类的 __init__ 方法以确保基类也被正确初始化。这可以通过使用 super() 函数实现。
__str__()方法
在Python中__str__()方法是一个特殊的方法用于定义一个对象的“正式”字符串表示当你使用print()函数或str()函数将对象转换为字符串时Python解释器会调用这个方法。它通常应该返回一个友好易读的字符串让用户能够理解对象的状态。
作用
格式化字符串
class Cat(object):def __init__(self,name, age, height):self.username nameself.age ageself.height heightdef __str__(self):print(String Run ..,self.username)# print(self.username, self.age, self.height)s f姓名{self.username}年龄{self.age}身高{self.height}return s
tom Cat(Tom,1,50cm)
print(tom)输出
姓名Tom年龄1身高50cm_str__()方法特点 1、_str__()方法必须有一个返回值而且返回值必须是字符串。 2、如果需要将实例对象的信息按照一定的格式进行显示可以在这里进行修饰。 3、修饰完可以将这个格式化字符串返回让str()方法执行时得到该对象转换后的字符串类型。
__del__()方法
在Python中__del__ 方法是一个特殊方法它被称为析构器destructor。这个方法在对象即将被删除时被自动调用。通常情况下这发生在Python的垃圾回收器决定从内存中删除一个对象时或者当对象的引用计数降到0时。
__del__ 方法的主要用途是确保对象释放分配给它的资源。例如如果对象持有文件、网络连接或数据库连接等资源__del__ 方法可以确保这些资源在对象不再使用时被正确关闭。
class Cat(object):def __init__(self,name):self.name namedef __del__(self):# 要在这个方法中将当前对象持有的其它对象手动销毁del self.nameprint(del run ...)
tom Cat(tom)
# 执行下面的代码 时会自动 调用 __del__ 方法将这个对象销毁回收对象内存资源
del tom
print(over) 结论
Python中的类是创建自定义数据结构的强大工具它支持继承、多态性和封装等OOP特性。通过理解类如何工作你可以写出更加模块化、可重用和易于维护的代码。记住类应该简单而且一目了然最好每个类只负责一件事情。掌握了Python中的类将有助于你在面向对象编程的世界中进行更深入的探索。