Python基础之:Python中的类

工业预测模型避坑指南:PHM2012轴承数据实战中,LSTM、CNN、Transformer到底怎么选? 本文深入探讨了工业预测模型在PHM2012轴承数据下的选型策略,对比了LSTM、CNN和Transformer等主流模型在轴承寿命预测任务中的表现。通过真实实验数据,提供了可复现的选型决策框架,帮助工程师根据数据规模、硬件条件和精度要求选择最佳模型。文章还揭示了工程落地中的隐藏陷阱,如数据不均衡和工况迁移挑战,并提出了解决方案。 阅读详情


在这里插入图片描述

简介

class是面向对象编程的一个非常重要的概念,python中也有class,并且支持面向对象编程的所有标准特性:继承,多态等。

本文将会详细讲解Python中class的信息。

作用域和命名空间

在详细讲解class之前,我们来看一下作用域和命名空间的概念。

命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。

命名空间主要是为了避免程序中的名字冲突。只要名字在同一个命名空间中保持唯一即可,不同的命令空间中的名字互不影响。

Python中有三种命名空间:

  • 内置名称(built-in names), Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
  • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
  • 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)

命名空间的搜索顺序是 局部名称-》全局名称-》内置名称。

在不同时刻创建的命名空间拥有不同的生存期。包含内置名称的命名空间是在 Python 解释器启动时创建的,永远不会被删除。模块的全局命名空间是在在模块定义被读入时创建.

通常,模块命名空间也会持续到解释器退出。

被解释器的顶层调用执行的语句,比如从一个脚本文件读取的程序或交互式地读取的程序,被认为是 __main__ 模块调用的一部分,因此它们也拥有自己的全局命名空间。(内置名称实际上也存在于一个模块中;这个模块称作 builtins 。)

一个 作用域 是一个命名空间可直接访问的 Python 程序的文本区域。

Python中有四种作用域:

  • Local:最内层,包含局部变量,比如一个函数/方法内部。
  • Enclosing:包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。
  • Global:当前脚本的最外层,比如当前模块的全局变量。
  • Built-in: 包含了内建的变量/关键字等。,最后被搜索

作用域的搜索顺序是 Local -> Enclosing -> Global -> Built-in

Python中用nonlocal关键字声明为Enclosing范围,用global关键字声明为全局范围。

我们来看一个global 和 nonlocal 会如何影响变量绑定的例子:

def scope_test():
    def do_local():
        spam = "local spam"

    def do_nonlocal():
        nonlocal spam
        spam = "nonlocal spam"

    def do_global():
        global spam
        spam = "global spam"

    spam = "test spam"
    do_local()
    print("After local assignment:", spam)
    do_nonlocal()
    print("After nonlocal assignment:", spam)
    do_global()
    print("After global assignment:", spam)

scope_test()
print("In global scope:", spam)

上面程序输出:

After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam

函数内的变量默认是local作用域,如果要在函数的函数中修改外部函数的变量,那么需要将这个变量声明为nonlocal, 最后在模块顶层或者程序文件顶层的变量是全局作用域,如果需要引用修改的话需要声明为global作用域。

class

Python中的类是用class来定义的,我们看一个最简单的class定义:

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

类定义中的代码将创建一个新的命名空间,里面的变量都被看做是局部作用域。所有对局部变量的赋值都是在这个新命名空间之内。

类对象

class定义类之后,就会生成一个类对象。我们可以通过这个类对象来访问类中定义的属性和方法。

比如我们定义了下面的类:

class MyClass:
    """A simple example class"""
    i = 12345

    def f(self):
        return 'hello world'

类中定义了一个属性 i 和一个方法 f。那么我们可以通过 MyClass.i和MyClass.f 来访问他们。

注意,Python中没有像java中的private,public这一种变量访问范围控制。你可以把Python class中的变量和方法都看做是public的。

我们可以直接通过给 MyClass.i 赋值来改变 i 变量的值。

In [2]: MyClass.__doc__
Out[2]: 'A simple example class'

In [3]: MyClass.i=100

In [4]: MyClass
Out[4]: __main__.MyClass

In [5]: MyClass.i
Out[5]: 100

Class中,我们还定义了class的文档,可以直接通过 __doc__ 来访问。

类的实例

实例化一个类对象,可以将类看做是无参的函数即可。

In [6]: x = MyClass()

In [7]: x.i
Out[7]: 100

上面我们创建了一个MyClass的实例,并且赋值给x。

通过访问x中的i值,我们可以发现这个i值是和MyClass类变量中的i值是一致的。

实例化操作(“调用”类对象)会创建一个空对象。 如果你想在实例化的时候做一些自定义操作,那么可以在类中定义一个 __init__() 方法时,类的实例化操作会自动为新创建的类实例发起调用 __init__()。

def __init__(self):
    self.data = []

__init__()方法还可以接受参数,这些参数是我们在实例化类的时候传入的:

>>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)

实例对象的属性

还是上面class,我们定义了一个i属性和一个f方法:

class MyClass:
    """A simple example class"""
    i = 12345

    def f(self):
        return 'hello world'

我们可以通过实例对象来访问这个属性:

In [6]: x = MyClass()

In [7]: x.i
Out[7]: 100

甚至我们可以在实例对象中创建一个不属于类对象的属性:

In [8]: x.y=200

In [9]: x.y
Out[9]: 200

甚至使用完之后,不保留任何记录:

x.counter = 1
while x.counter < 10:
    x.counter = x.counter * 2
print(x.counter)
del x.counter

方法对象

我们有两种方式来访问函数中定义的方法,一种是通过类对象,一种是通过实例对象,看下两者有什么不同:

In [10]: x.f
Out[10]: <bound method MyClass.f of <__main__.MyClass object at 0x7fb69fc5f438>>

In [11]: x.f()
Out[11]: 'hello world'

In [12]:  MyClass.f
Out[12]: <function __main__.MyClass.f>

In [13]:  MyClass.f()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-e50d25278077> in <module>()
----> 1 MyClass.f()

TypeError: f() missing 1 required positional argument: 'self'

从上面的输出我们可以看出,MyClass.f 是一个函数,而x.f 是一个object对象。

还记得f方法的定义吗?f方法有一个self参数,如果作为函数来调用的话,一定要传入所有需要的参数才可以,这也就是为什么直接调用MyClass.f() 报错,而 x.f() 可以直接运行的原因。

虽然方法的第一个参数常常被命名为 self。 这也不过就是一个约定: self 这一名称在 Python 中绝对没有特殊含义。

方法对象的特殊之处就在于实例对象会作为函数的第一个参数被传入。 在我们的示例中,调用 x.f() 其实就相当于 MyClass.f(x)。 总之,调用一个具有 n 个参数的方法就相当于调用再多一个参数的对应函数,这个参数值为方法所属实例对象,位置在其他参数之前。

为什么方法对象不需要传入self这个参数呢?从 x.f的输出我们可以看出,这个方法已经绑定到了一个实例对象,所以self参数会被自动传入。

方法可以通过使用 self 参数的方法属性调用其他方法:

class Bag:
    def __init__(self):
        self.data = []

    def add(self, x):
        self.data.append(x)

    def addtwice(self, x):
        self.add(x)
        self.add(x)

类变量和实例变量

在类变量和实例变量的使用中,我们需要注意哪些问题呢?

一般来说,实例变量用于每个实例的唯一数据,而类变量用于类的所有实例共享的属性和方法。

class Dog:

    kind = 'canine'         # class variable shared by all instances

    def __init__(self, name):
        self.name = name    # instance variable unique to each instance

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind                  # shared by all dogs
'canine'
>>> e.kind                  # shared by all dogs
'canine'
>>> d.name                  # unique to d
'Fido'
>>> e.name                  # unique to e
'Buddy'

所以,如果是实例变量,那么需要在初始化方法中进行赋值和初始化。如果是类变量,可以直接定义在类的结构体中。

举个正确使用实例变量的例子:

class Dog:

    def __init__(self, name):
        self.name = name
        self.tricks = []    # creates a new empty list for each dog

    def add_trick(self, trick):
        self.tricks.append(trick)

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks
['roll over']
>>> e.tricks
['play dead']

如果同样的属性名称同时出现在实例和类中,则属性查找会优先选择实例:

>>> class Warehouse:
        purpose = 'storage'
        region = 'west'

>>> w1 = Warehouse()
>>> print(w1.purpose, w1.region)
storage west
>>> w2 = Warehouse()
>>> w2.region = 'east'
>>> print(w2.purpose, w2.region)
storage east

继承

看下Python中继承的语法:

class DerivedClassName(BaseClassName):
    <statement-1>
    .
    .
    .
    <statement-N>

如果基类定义在另一个模块中的时候:

class DerivedClassName(modname.BaseClassName):

如果请求的属性在类中找不到,搜索将转往基类中进行查找。 如果基类本身也派生自其他某个类,则此规则将被递归地应用。

派生类可能会重写其基类的方法。 因为方法在调用同一对象的其他方法时没有特殊权限,所以调用同一基类中定义的另一方法的基类方法最终可能会调用覆盖它的派生类的方法。

Python中有两个内置函数可以用来方便的判断是继承还是实例:

  • 使用 isinstance() 来检查一个实例的类型:

    例如:isinstance(obj, int) 仅会在 obj.__class__ 为 int 或某个派生自 int 的类时为 True。

  • 使用 issubclass() 来检查类的继承关系:

    例如: issubclass(bool, int) 为 True,因为 bool 是 int 的子类。 但是,issubclass(float, int) 为 False,因为 float 不是 int 的子类。

Python也支持多重继承:

class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>

如果某一属性在 DerivedClassName 中未找到,则会到 Base1 中搜索它,然后(递归地)到 Base1 的基类中搜索,如果在那里未找到,再到 Base2 中搜索,依此类推。

私有变量

虽然Python中并没有强制的语法规定私有变量,但是大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如 _spam) 应该被当作是 API 的非公有部分 (无论它是函数、方法或是数据成员)。

这只是我们在写Python程序时候的一个实现细节,并不是语法的强制规范。

既然有私有变量,那么在继承的情况下就有可能出现私有变量覆盖的情况,Python是怎么解决的呢?

Python中可以通过变量名改写的方式来避免私有变量的覆盖。

任何形式为 __spam 的标识符(至少带有两个前缀下划线,至多一个后缀下划线)的文本将被替换为 _classname__spam,其中 classname 为去除了前缀下划线的当前类名称。 这种改写不考虑标识符的句法位置,只要它出现在类定义内部就会进行。

举个例子:


class Mapping:
    def __init__(self, iterable):
        self.items_list = []
        self.__update(iterable)

    def update(self, iterable):
        for item in iterable:
            self.items_list.append(item)

    __update = update   # private copy of original update() method

class MappingSubclass(Mapping):

    def update(self, keys, values):
        # provides new signature for update()
        # but does not break __init__()
        for item in zip(keys, values):
            self.items_list.append(item)

上面的示例即使在 MappingSubclass 引入了一个 __update 标识符的情况下也不会出错,因为它会在 Mapping 类中被替换为 _Mapping__update 而在 MappingSubclass 类中被替换为 _MappingSubclass__update。

请注意传递给 exec() 或 eval() 的代码不会将发起调用类的类名视作当前类;这类似于 global 语句的效果,因此这种效果仅限于同时经过字节码编译的代码。

迭代器

对于大多数容器对象来说,可以使用for语句来遍历容器中的元素。

for element in [1, 2, 3]:
    print(element)
for element in (1, 2, 3):
    print(element)
for key in {'one':1, 'two':2}:
    print(key)
for char in "123":
    print(char)
for line in open("myfile.txt"):
    print(line, end='')

其底层原理就是for 语句会在容器对象上调用 iter()方法。 该函数返回一个定义了 __next__() 方法的迭代器对象,此方法将逐一访问容器中的元素。 当元素用尽时,__next__() 将引发 StopIteration 异常来通知终止 for 循环。

你可以使用 next() 内置函数来调用 __next__() 方法;下面的例子展示了如何使用:

>>> s = 'abc'
>>> it = iter(s)
>>> it
<iterator object at 0x00A1DB50>
>>> next(it)
'a'
>>> next(it)
'b'
>>> next(it)
'c'
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    next(it)
StopIteration

知道了迭代器的原理之后,我们就可以为自定义的class添加迭代器对象了,我们需要定义一个 __iter__() 方法来返回一个带有 __next__() 方法的对象。 如果类已定义了 __next__(),则 __iter__() 可以简单地返回 self:

class Reverse:
    """Iterator for looping over a sequence backwards."""
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index - 1
        return self.data[self.index]

生成器

生成器 是一个用于创建迭代器的简单而强大的工具。 它们的写法类似于标准的函数,但当它们要返回数据时会使用 yield 语句。 每次在生成器上调用 next() 时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)。

看一个生成器的例子:


def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]
>>>
>>> for char in reverse('golf'):
...     print(char)
...
f
l
o
g

可以用生成器来完成的操作同样可以用前一节所描述的基于类的迭代器来完成。 但生成器的写法更为紧凑,因为它会自动创建 __iter__() 和 __next__() 方法。

生成器还可以用表达式代码的方式来执行,这样的写法和列表推导式类似,但外层为圆括号而非方括号。

>>> sum(i*i for i in range(10))                 # sum of squares
285

>>> xvec = [10, 20, 30]
>>> yvec = [7, 5, 3]
>>> sum(x*y for x,y in zip(xvec, yvec))         # dot product
260

>>> unique_words = set(word for line in page  for word in line.split())

>>> valedictorian = max((student.gpa, student.name) for student in graduates)

>>> data = 'golf'
>>> list(data[i] for i in range(len(data)-1, -1, -1))
['f', 'l', 'o', 'g']


Python技术资源分享

小编是一名Python开发工程师,自己整理了一套 【最新的Python系统学习教程】,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。

保存图片微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

如果你是准备学习Python或者正在学习,下面这些你应该能用得上:

1、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

2、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

在这里插入图片描述

3、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

4、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

5、清华编程大佬出品《漫画看学Python》

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。

在这里插入图片描述

6、Python副业兼职与全职路线

在这里插入图片描述
这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

👉优快云大礼包:《Python入门资料&实战源码&安装工具】免费领取(安全链接,放心点击)

【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking 这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。如下图所示,Baseline是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易遗忘前面的样本,且容易对最近的若干帧样本过拟合。 阅读详情

相关推荐

ZYNQ开发(2)在Linux系统层上PL-PS通过AXI-DMA传输数据详细步骤及注意事项

参考的网络资料 https://github.com/bperez77/xilinx_axidma/tree/master https://gitlab.gnome.org/HosseinBeheshti/UlteraZed7EV/-/tree/master/petalinux/xilinx_axidma https://www.icode9.com/content-3-925319.html https://blog.youkuaiyun.com/weixin_38218267/article/details/1

aizaiyueye的专栏 3448

python:类内变量

类变量 成员变量 成员函数 局部变量 class A: v1 = 100 # 类变量 def __init__(self): self.v2 = 200 # 成员变量 v3 = 300 # 局部变量 类变量可以由类名统一修改: A.v1 = 300 # 则每一个A实例里v1都变成300 成员变量只能由实例自己改变: A.v2 # 这个是错的。 a = A() ...

ShellDawn的博客 1535

电池建模 004- Battery (Table-Based)表格化电池模型入门学习

对于 Battery (Table-Based) 模块,提供了多种内置参数。该预参数化数据允许您将模块设置为代表特定供应商的组件。这些电池的参数化可以与制造数据表中的放电曲线相匹配。要加载预定义的参数化,双击 Battery (Table-Based) 模块,点击 Selected part 参数中的 超链接,然后在块参数化管理器窗口中,从可用组件列表中选择所需部件。 (默认)选项用于参数化模块,以代表特定供应商的组件。

qq_63860930的博客 2734

python 中的class与变量使用

python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键。 #!/usr/bin/python #encoding:utf-8 global_variable_1 = 'global_variable' class MyClass(): class_var_1 = 'class_val_1' # ...

lawenliu的专栏 9067

.NET+Vue企业级RBAC权限平台:开箱即用的生产就绪方案

RBAC(基于角色的访问控制)是企业系统安全治理的基础模型,其核心在于将用户、角色与权限解耦,通过动态能力组合实现细粒度管控。在真实工程中,RBAC需突破静态角色限制,支持时间维度授权、前后端双重鉴权、行级数据范围控制等关键能力。本文聚焦于一套已落地金融、政务、制造等多行业的生产级实现——基于.NET Minimal API与Vue 3的前后端分离架构,提供菜单/按钮/接口/数据四层权限控制,内置滑动过期JWT、Redis权限缓存、动态路由加载与权限指令等开箱即用能力,显著降低权限配置与审计成本。

weixin_33326218的博客 275

Dify整合FireCrawl与百度搜索实战:手把手教你打造全能研究助手

本文手把手教你基于Dify平台,整合FireCrawl网页爬虫与百度搜索能力,构建一个能同时处理本地文档与实时网络信息的全能研究助手。通过部署核心环境、配置模型、接入两大工具并设计自动化工作流,实现从问题提出到深度分析报告生成的一站式解决方案,极大提升信息调研与整合效率。

weixin_29062963的博客 500

python - 内置对象 之 变量

目录 一、变量命名规划 1.命名规则 2.私有变量 3.python常用命名规范 二、变量赋值规则 1.赋空值方法 2.增强赋值语句 3.变量赋值比较式 4.用input()对变量赋值 5.删除已声明的变量 三、python变量引用顺序 四、global定义全局变量 一、变量命名规划 1.命名规则 (1)命名内容只能是字母、下划线、数字 (2)名字第1字符只能是字母或下划线 (3)区分大小写 2.私有变量 (1)_xxx "单下划线" 开始的成员变量相当于私有变.

开码河粉 515

Tesseract in Java - Intellij IDEA对Tess4J的配置和使用

最近要弄OCR,搜到这个,官网全英文,很烦,看看有没有中文的博客介绍,擦,一个比一个奇葩,还是自己按照官方的来吧,外网慢的很,传到csdn给大家下载。中文训练库下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916532Tess4J3.4下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916519安装

Lewis的博客 1万+

python 定义class时的内置方法

__contains__():对类实例使用in ,not in操作时调用 class A(object): def __init__(self,num): self.num=num def __contains__(self,item): print('__contains__: %s is in ?' % item ) ...

weixin_34067980的博客 237

深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。按F12打开开发者工具,切换到Network(网络)面板。实际环境中,我们需要使用Python重现这一加密逻辑。查看请求响应,寻找包含评论数据的JSON接口。参数是大众点评的反爬机制核心,需要特别处理。:尊重网站的robots.txt文件规定。:仅将数据用于合法合规的研究和分析目的。:不侵犯大众点评的商业秘密和知识产权。打开大众点评网站,进入任意商户页面。:对采集到的用户信息进行脱敏处理。:避免对目标网站造成过大负担。

Z_suger7的博客 1583

点云去噪:基于点云拟合的方法

点云处理是计算机视觉中的重要任务之一,而点云去噪是点云处理的关键步骤之一。在实际应用中,由于采集设备的噪声、运动估计误差或者环境干扰等因素,点云数据中常常包含有噪声点,这些噪声点会对后续的点云分析和处理造成不良影响。一种简单的方法是计算点到拟合曲面的距离,并将距离超过某个阈值的点定义为噪声点,进行过滤。一种简单的方法是计算点到拟合曲面的距离,并将距离超过某个阈值的点定义为噪声点,进行过滤。该方法通过拟合点云数据的曲面模型,对噪声点进行识别和过滤,从而得到更加干净的点云数据。

AuSwift的博客 638

python的class里面的类变量

python类里面的注意事项 在学习python写类的过这个中遇到些问题,感觉和以前语言写类的方式有些差别,可能是自己学艺不精才遇到这些问题。 先来一段代码: class Dog: n='这是一个类变量' #类变量 n_list=[] name='这是类的name!' def __init__(self,name,weapen,role,money=1...

NeoInHeart的博客 8305

KingSCADA实现按钮点击效果

哈喽,你好啊,我是雷工!在做SCADA项目的时候,按钮是不可缺少的功能,但软件自带的按钮太丑,已经无法满足现如今客户对界面美观度的要求。这时候就需要UI小姐姐设计美观大气的SCADA界面,但UI设计的按钮切图放到程序中只是图片素材,当添加了按钮功能时,虽然能实现按钮功能,但没有任何点击效果;当遇到有需要连锁条件才能点击的按钮时,操作员无法区分是有连锁点击了没反应,还是系统界面卡死了导致的没点击成功,这时候有点击效果就能很好的区分这种问题。本篇介绍一种实现按钮点击效果的方法,以下为操作过程。

做有价值的事,积累有价值的笔记! 2765

Python 基础:类

定义一个类非常简单,只需要使用class关键字,后面跟着类名(首字母大写),然后是冒号。类体中的代码块定义了类的属性和方法。class Car:return f"在上面的例子中,Car是一个类,它有三个属性:makemodel和year。__init__(开头结尾都有两个下划线)方法是一个特殊的方法,被称为类的构造器,它在创建类的新实例时自动调用。在这个方法中,形参self必不可少。

si_ying的博客 3845

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

python的类有哪些_python中的类有哪些

python中的类有哪些发布时间:2020-08-25 13:40:43来源:亿速云阅读:89作者:Leahpython中的类有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。类是什么类是一种组合信息和行为的方式。举个例子,我们考虑在物理仿真中建造一个飞船。首先要做的就是追踪飞船的坐标(x, y)。飞船在代码中的形式如下:cla...

weixin_33603844的博客 1543

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python中的类

如何编写类;如何使用属性在类中存储信息,以及如何编写方法,以让类具备所需的行为;如何编写方法__init__(),以便根据类创建包含所需属性的实例。你见识了如何修改实例的属性——包括直接修改以及通过方法进行修改。还了解:使用继承可简化相关类的创建工作;将一个类的实例用作另一个类的属性可让类更简洁,通过将类存储在模块中,并在需要使用这些类的文件中导入它们,可让项目组织有序。最后需要学习了Python标准库,并见识了库中的写法*arg和**kwargs的具体用法。

weixin_45619069的博客 913

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python中的元类

Python中的元类 Python一切皆对象,所以类也是对象。 我们知道,对象是通过类实例化创建出来的。但我们创建类时并没有进行实例化操作,为什么类也是对象呢? 类既然是对象,类肯定是另外某个类的实例。这说明在我们使用class声明一个类的时候Python解释器为我们做了些什么。 一、元类介绍 通过一个类,可以创建无数个实例对象,类就相当于一个生产实例对象的机器,可以不断的生产出实例对象...

weixin_43790276的博客 3915

7、Python基础之【类】

Python也是一种面向对象的编程语言,很多语法、特征同java十分类似,甚至有的地方几乎一模一样。类就是其中一个方面,比如在构造方法、实例创建、属性修改、继承等方面,二者相差无几。当然,本人目前还处于学习Python基础的阶段,可能理解尚浅。关于java的类相关知识这里不做说明,只介绍一下python中关于类的概念。

NightWish的博客 6571

python中常用的类,python 类的用法

大家好,本文将围绕python中常用的类展开说明,python 类的用法是一个很多人都想弄明白的事情,想搞清楚python类的概念需要先了解以下几个事情。本文是一篇关于Python类的学习总结,主要包括类的基础知识、类的使用以及类的优势。如果你想弄清楚Python中的类,就赶紧接着看下去吧~

2301_81896102的博客 768

python类中包含类_彻底搞懂Python中的类

Python类的定义Python 中定义一个类使用 class 关键字实现,其基本语法格式如下:class类名:多个(≥0)类属性...多个(≥0)类方法...注意,无论是类属性还是类方法,对于类来说,它们都不是必需的,可以有也可以没有。另外,Python 类中属性和方法所在的位置是任意的,即它们之间并没有固定的前后次序。和变量名一样,类名本质上就是一个标识符,因此我们在给类起名字时,必须让其符...

weixin_39768695的博客 3813

python基础:类

本文介绍了面向对象编程(OOP)中的核心概念和实现方法。主要内容包括:1) 创建和使用类,通过Dog类示例演示属性定义和方法调用;2) Car类示例展示如何修改属性值,包括直接修改、通过方法和递增三种方式;3) 继承机制,说明子类如何继承父类属性和方法,并添加特有功能;4) 类模块化,讲解如何将类存储在单独模块中并导入使用;5) 标准库random模块的应用。文章采用实例代码演示方式,详细讲解了类定义、实例化、属性操作、方法重写等关键概念,并提供了Python编程风格建议。全文通过汽车、电池等具体案例,帮助

m0_73759720的博客 1096
上一篇: Python数据分析:Matplotlib新手指南
下一篇: 爬虫现在还有那么吃香嘛?
一秋的编程笔记
博客等级 码龄4年 1588粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值