python的类与子类

本文介绍了Python中的类和子类。类是代码与数据的结合,用于创建具有相同特性的对象实例。定义类时,可以创建定制的工厂函数。类的实例化使用`class`关键字,每个对象都有其特定的`self`参数,指向当前对象实例。同时,文章还探讨了子类的定义和使用,如何通过继承创建新的类,并提供了具体的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

1、类的定义
类是用来将代码与代码处理的数据相关联,有助于降低复杂性,更易维护代码;
python也提供了一种方法将代码及其处理的数据定义为一个类,一旦有了类,就可以用它来创建(或实例化)数据对象,它会继承类的特性;
在面向对象的世界里,代码通常称为类的方法method,而数据通常称为类的属性attribute,实例化的数据对象通常称为实例instance。
每个对象都由类创建,并共享一组类似的特性。
定义一个类时,实际上是在定义一个定制工厂函数,可以在代码中引用这个函数
dd09325dbfc9acc0f7e70debbbcc1f3f.png

2、定义类及使用
Step1:使用class创建对象

class Athlete:                        #Athlete为类名
    def __init__(self):
    # the code to initialize a 'Athlete' object

Step2:创建对象实例
将对类名的调用赋至各个变量,通过这种方式,类(以及__init__())方法提供了一种机制,允许创建一个定制的工厂函数,用来根据需要创建多个对象实例:
a = Athlete()
b = Athlete()
c = Athlete()
d = Athlete()

724d0930342f50257cad8aed4e0f5161.png

3、self参数的重要性
是一个方法参数,总是指向当前对象实例

  • 目标标识符赋至self参数
  • 每个方法的第一个参数都是self

4、例子

class Athlete:
    def __init__(self,value = 0):
        self.thing = value
    def how_big(self):
        return(len(self.thing))

>>> d=Athlete("hello")
>>> d.how_big()
5
>>> d
<__main__.Athlete object at 0x03269FB0>

3460286fb88d7ff7cd067a6cf6412b6d.png

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

>>> d =Athlete('q','2012-6-17',['2.36','2.35'])
>>> b =Athlete('p')
>>> type(d)
<class '__main__.Athlete'>
>>> type(b)
<class '__main__.Athlete'>
#虽然都由d和b都经过了Athlete这个工厂函数处理,但是存储在不同的内存地址上

>>> d
<__main__.Athlete object at 0x02F09F90>
>>> b
<__main__.Athlete object at 0x0336F850>
>>> d.name
'q'
>>> d.dob
'2012-6-17'
>>> d.times
['2.36', '2.35']
>>> b.dob
>>> b.times
[]

子类

1、子类的定义
通过继承现有的其他类来创建一个类,包括用list,set,dict提供的python内置数据结构类。

2、定义子类及使用

  • NamedList:新类名
  • list:被派生的老类
  • list.init([]):初始化所派生的类
  • self.name = a_name:把参数赋至属性
>>> class NamedList(list):
	def __init__(self,a_name):
		list.__init__([])
		self.name = a_name

		
>>> j = NamedList("Jone")
>>> type(j)
<class '__main__.NamedList'>
>>> dir(j)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'name', 'pop', 'remove', 'reverse', 'sort']
>>> j.append('b')
>>> j
['b']
>>> j.name
'Jone'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值