python class类专栏

超详细!Python 类 Class--详细整理 并且,Python 中也没有真正的私有属性,只有一种约定俗成的方法来模拟私有属性的效果,这也是 Python 的一种“鸭子类型”的体现。类方法可以访问类的私有属性,也可以修改。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。 阅读详情

class是什么

class是用来描述具有相同属性和方法的对象的结合。他定义该集合中每个对象所共有的属性和方法。对象是类的实例。

其中,类变量是在整个实例化的对象中是公用的。类变量定义子啊类中且在函数体之外。类变量通常不作为实例变量使用。

class的定义与实例的创建

假如我们想定义一个圆,即

class circle(object):###创建这个类别叫circle, circle为类名
    pass####这里可以添加属性和方法

​

如果想调用circle这个类,可以通过类似于函数的方法进行调用

circle1=circle()
1.实例属性

这个circle不能光有一个名字啊,我们知道圆至少需要半径有关的属性,于是我们给圆添加半径

circle.r=1
print(circle1.r)

在定义这个类的时候,我们还可以添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用为创建的实例增加实例属性

我们在此为每个实例都统一加上了我们需要的属性

# -*- coding: utf-8 -*-
"""
Created on Mon Apr  8 21:24:07 2024

@author: DELL
"""
class circle:
    pi=3.1415###类属性(类变量,自己定义的,像__name__这种是默认定义的类变量),类属性是放在外面的哦,放在__init__里面的是实例属性,不要搞混了
    
    def __init__(self,r): ####这个就是实例函数,实例函数与普通函数唯一的区别就是多了一个叫self的变量,这个self=circle这个类,相当于在调用里面的函数的时候需要知道是这个类,但是这个从操作在python里面已经被简化了
    ####__init__函数是用来做初始化的
        ######实例函数里面定义的属性就是实例属性
        self.r=r#####圆的半径是什么,加上了selg之后,这个变量就会在这后面的函数中都能被调用了,所以__init__相当于一个初始化环境
        self.d=2*r#####圆的直径是什么
        self.S=self.pi*r**2#####圆的面积是什么
        self.C=self.d*self.pi
        
        self.__notallow=20   ####定义了一个私密属性,加一个下划线是代表私有,但是不影响外部调用,加上两个下划线代表完全私有,这个函数在外部就无法调用了
        
        
    def get_S(self):#######通过定义函数也可以得到圆的面积(自己定义的实例函数)
        return 2*self.pi*self.r**2
    
    def __get_notallow(self): #####定义了一个私密函数
        return 20
circle1=circle(2)#########这个就是创建的对象
print('这是圆的半径',circle1.r)
print('这是圆的直径',circle1.d)
print('这是pi',circle1.pi)
print('这是圆的面积',circle1.S)
print('这是也是圆的面积',circle1.get_S())


def main():
    print(circle)
    
    circle1=circle(1)###其实这个变量存放的就是他的一个储存器
    print(hex(id(circle1)))#####输出他的内存地址
    
    
    circle1=circle(1)###其实这个变量存放的就是他的一个储存器的故乡你
    
    print(hex(id(circle1)))#####可以看到,重新赋值之后变成了一个新的内存地址
    
    print(isinstance(circle1,circle))####判断这个对象是不是一个实例,对比这个对象是不是这个类的

    print(isinstance(circle1,circle))####类也是一个对象,他是type的对象
    
    
    

    ###类本身就是一个对象,类本身这个变量的属性就是类变量,用这个类造出来的新变量,这个变量的属性叫做实例变量
    ####所有类的对象都共享同一个类变量
    
    print(circle.__name__)####__name__是一个默认定义的类变量
    print(circle.pi)####提取出类变量
    print(getattr(circle,"pi"))#####这个方法也可以提取处类变量
    
    ####但是getattr有一个很强的用处,比如你找的这个属性在这个类里面不存在,这个函数就会返回第三个参数,这是python作为一个动态语言的体现
    print(getattr(circle,'unknown','a new attribute'))##
    
    
    ####修改类属性
    circle.pi=3.14159
    ####或者可以
    setattr(circle,"pi",3.1415)####和前面的getattr一样,这也是一个可以动态修改的方法,比如
    setattr(circle,"unknown",'10')#####这就会给之前的类多附加他之前没有的属性
    ####添加类属性
    circle.newattribute=100000#####这和上面setattr的方法几乎如出一辙,但是一般不建议使用
    print(circle.newattribute)
    
    # ####删除类属性,因为把变量删除了我就没法作示范了,所以把这行给注释掉了
    # del circle.pi ###老方法了,或者一下方法
    # delattr(circle,'pi')  
    
    #########类变量的存储
    print(circle.__dict__)###类变量都存储在这个叫做__dict__的字典里面了
    
    
    
    ######对实例函数的调用
    # 1.先创建一个物理对象
    # 2.在通过调用__init__来初始化这个object,给object一个初始环境
    
    circle1=circle(2)#####这个其实就是对__init__方法的调用
    
    circle1.get_S()####实例函数是对该类的对象掉调用的,不是对该类自己调用的

    ####比如我给circle1人为定义了一个属性,这个属性能在别的调用的对象出现吗?
    
    circle1.newattr=1
    
    circle2=circle(2)
    # print(circle2.newattr)####答案是不行,会报错
    
   
    
    ###########私有属性与函数
    
    ###为什么要定义私的函数
    #为了面向对象的封装,不希望把我们定义的封装的属性暴力给外部使用者(把用户可能会犯错的东西封装)
    #原则就是给这个对象加上一个或者两个下划线,就比如 _name
    #

if __name__=='__main__':
    main()###

我们可能会疑惑,这个self到底是个什么变量么,其实self就是circle这个类它自己,调用self就是调用circle自己了啦

类方法

使用装饰器@classmethod调用当前类对象来传递类的属性和方法

class circle:
    @classmethod
    def get_instance(cls):
        return cls

print(circle.get_instance().__name__)

###输出的结果就是circle类的名字,circle啦
###可以举一反三,这个方法能把这个类里面的别的变量和方法都调用出来

静态方法

class circle:
    r=2
    @staticmethod
    def f():######可以看出来,定义这个函数时不需要像其他类里面的函数要加self
        print(circle.r)#####因此这个函数在调用这个类里面的其他变量时间要加上这个类作为前缀

常用的特殊方法

一共有以下几种方法

__str__
__repr__
__eq__
__hash__
__bool__
__del__
1.__str__

用于返回一个描述对象本身的字符串

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __str__(self):
        return f'{self.year}-{self.mon}-{self.day}'

my_date=MyDate(2024,1,1)
print(str(my_date))###一般str的作用是把其他类型的数据转化为字符串,而当前面有类对象被调用的时候,它的作用就改变为输出这个类里面__str__函数的东西了
####因此输出的结果为 2024-1-1
2.__repr__

为了给开发者输出想要看到的调试信息

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __repr__(self):
        return f'MyDate: {self.year}-{self.mon}-{self.day}'

my_date=MyDate(2024,1,1)
print(repr(my_date))###为开发者使用的,可以输出一些调试信息(但感觉和__str__用法差不多)
 3.__eq__

用于实现对比两个对象是否一样(这个“一样”的逻辑是你自己定义的)

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __eq__(self,other):
        if not isinstance(other,MyDate)####如果被对比的对象不是MyDate这个类,直接就认为不等
            return False
        
        return self.year == other.year\
                self.mon == other.mon  ###我们这里定义,如果这两个类的实例拥有同样的年和月,就认为相同(这个逻辑可以自己随便魔改)

my_date1=MyDate(2024,1,1)
my_date2=MyDate(2024,1,1)
print(my_date1 == my_date2)###结果需要用 A == B 来调用
 4.__hash__

用处是为你的对象生成一个特定的hash值,用来存放到set或者字典里面

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __hash__(self):
        return hash(self.year + self.mon*101 + self.day*101)

my_date1=MyDate(2024,1,1)

a_set=set()
a_set.add(my_date1)#当对象被放进set里面,会直接通过__hash__方法给定的hash值来存放
5.__bool__ 

用于在对象被bool函数求解时返回一个布尔值。若这个类没有实现这个__bool__方法,那bool函数会去调用类里面的__len__方法求解布尔值

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __bool__(self):
        if year>=2020:
            return True
        else:
            return False

my_date1=MyDate(2024,1,1)

print(bool(my_date1))
6.__del__

在对象被删除时调用 

class MyDate:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def __del__(self):
        print("do not delete me!")

my_date1=MyDate(2024,1,1)

del my_date1

 property类

为了防止实例变量被外部错误修改,就需要编写setter和getter方法,然而其中会引起兼容性的问题(例如之前能直接引用的变量突然不能直接引用了),这个时候就需要引入property类

举例

class Student:
    def __init__(self,name: str,age: int):
        self.name = name 
        self.age = age
 
student=Student("Jack",19)
student.age=-2 ########发现这里的对年龄的赋值 肯定是有问题的,应该找个方法提醒别人不要这样

站在面向对象的设计角度来说,我们应该告诉使用这不应该这么赋值,那怎么办呢

1.先把变量变为私有

2.想改变量可以,但是你要调用函数去改,不要直接改变量(这个时候就可以在函数里面来判断赋的值是不是小于零了)

class Student:
    def __init__(self,name: str,age: int):
        self.name = name 
        self.__age = age
    
    def set_age(self, age: int):
        if age<0 or age>200:
            raise Exception(f"age {age} is not valid")
        else:
            self.__age=age
    
    def get_age(self):
        return  self.age
student=Student("Jack",3)
student.set_age(3) ######通过set方法对结果重新赋值
print(student.get_age()) #####通过get方法提取属性的值

但是又引出来了别的问题,别人student.age=14用的好好的,也没犯啥错,你突然把程序这么一改就没法直接赋值了,这让没犯错的人很为难。这个时候就要引入property类啦

class Student:
    def __init__(self,name,age):
        self.name = name 
        self.__age=age
    
    def set_age(self, age):
        if age<0 or age>200:
            raise Exception(f"age {age} is not valid")
        else:
            self.__age=age
    
    def get_age(self):
        return  self.__age

    age = property(fget=get_age, fset=set_age)

student=Student("Jack",3)
student.age=5 
print(student.age) 
1.@property类装饰器 

像上面操作一样手打property太麻烦,pythontigongle@property类装饰器让写代码变轻松了

class Student:
    def __init__(self,name,age):
        self.name = name 
        self.__age=age
    
    @property #######加上property装饰器,对调用的人来说,age就像一个属性,而不是函数了
    def age(self):
        return  self.__age

    @age.setter  #####这样给age又加上了赋值的属性
    def age(self, age):
        if age<0 or age>200:
            raise Exception(f"age {age} is not valid")
        else:
            self.__age=age
    
    

    

student=Student("Jack",3)
student.set_age(3) ######通过set方法对结果重新赋值
print(student.get_age()) #####通过get方法提取属性的值
 2.只读property

比如我们定义一个叫正方形的类

class Square:
    def __init__(self,width):
        self.__width=width
    
    @property
    def area(self):
        return self.__width**2
square = Square(5)
print(square.area)
print(square.area)

这个类里面有宽度的属性和计算面积的函数(虽然被property装饰之后,外部的调用者认为这也是一个属性) 

这个时候,如果我们要多次调用面积的话,它每次都得重新计算一次面积(因为这个面积是函数,不是已经赋值好了的属性),这样就会很占用计算时间。我们可以给它一个位置储存已经计算好的面积结果,即

class Square:
    def __init__(self,width):
        self.__width=width
        self.__area=None####先定义一个空的变量,过会计算面积之后赋值给它
    
    @property
    def area(self):
        if self.__area is None:###第一次计算结束把值赋给self.__area,第二次就能直接调用area了,无需计算
            self.__area=self.__width**2
        
square = Square(5)
print(square.area)
print(square.area)

又来了个问题,万一有人第二次计算的时候把width的值给改了,那area的结果不就和width对不上了吗,所以widht也要一起改

class Square:
    def __init__(self,width):
        self.__width=width
        self.__area=None####先定义一个空的变量,过会计算面积之后赋值给它
    @property
    def width(self):
        return self.__width
    @width.setter
    def width(self,width):
        self.__width=width
        self.__area=None####改了width的值之后,area面积清空重新计算
    @property
    def area(self):
        if self.__area is None:###第一次计算结束把值赋给self.__area,第二次就能直接调用area了,无需计算
            self.__area=self.__width**2
        
square = Square(5)
print(square.area)
print(square.area)
3.删除property

定义一个删除时间会出现的property,但是对于大部分开发拉说并不需要(动态语言的时候可能需要)

class Square:
    def __init__(self,width):
        self.__width=width
        self.__area=None####先定义一个空的变量,过会计算面积之后赋值给它
    @property
    def width(self):
        return self.__width
    @width.setter
    def width(self,width):
        self.__width=width
        self.__area=None####改了width的值之后,area面积清空重新计算
    @property
    def area(self):
        if self.__area is None:###第一次计算结束把值赋给self.__area,第二次就能直接调用area了,无需计算
            self.__area=self.__width**2

    @area.delete
    def area(self):###这里就提供一个删除的属性
        self.aera=None
square = Square(5)
print(square.area)
print(square.area)

def square.area ####这个时候删除area属性,会发生什么呢?

#####结果只是把area属性变成了一个空的值。并不是真的删掉了,这是delete方法所提供

 类的继承

一个类拥有特定的特征之后,如果你还希望这个类还拥有你自己扩展的东西,那就需要继承父类所拥有的能力,同时也拥有自己的能力,这就叫类的继承

类继承的定义
class Person:
    def _init__(self,name):
        self.name=name
class Student(Person):###这个Student就是Person的子类
    pass

student=Student('name')###很明显哈,我们似乎没给Student类添加name属性,那name真的能赋值在student里面吗?
print(student.name)####结果是打出来了,原因是Student继承了Person类的属性

同样,子类也可以拥有自己的属性。这个属性可以自己定义

class Person:
    def __init__(self):
        self.name = 'JACK'
    
class Student(Person):
    def __init__(self):
        self.school='ABC'
       
student_A=Student()
#
print(student_A.__dict__)###结果可以看到student_A没有name属性了,按照之前的结果来说应该继承了父类的属性了啊

 因为__init__是构造方法,只有构造方法被执行的时候里面的属性才会被创建。然而当Studen这个子类自己有__init__方法的时候,父类的方法就没执行了,因此self.name也没被赋值

如果子类不写__Init__,python会自动调用父类的方法,而子类如果写了就不调用了。如果想执父类的方法,可以通过以下途径。

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
        

student_A=Student()
print(student_A.__dict__)####这可以看出来这个结果没有属性了。
 isinstance()

用来判断是不是一个类的对象

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
        

student_A=Student()
print(isinstance(student_A,Student))####用来判断是不是一个类型的对象
print(isisntance(student_A,Person))####大家猜猜这两个是不是一个类型的对象

 答案当然是啦,可以想一想,这个学生到底是不是个人呢(答案当然是啦)

issubclass()

用来判断一个类是不是另一个类的子类

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
        

student_A=Student()
print(issubclass(Person,Student))####用来判断Student是不是Person的子类

 方法重写

父类定义了一个方法,但是子类在继承的时候觉得这个方法不好,想重新定义一下

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
        
student_A=Student()
student_A.say()

这个例子的结果输出的是

hello from person

但是你对这个结果不满意,想把这个输出的结果改成hello from student,我们就可以直接在子类下面重新定义一个一摸一样的函数,但是把内容给改了,把之前父类的函数给覆盖掉

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
       
    def say(self):
        print("hello from a student")
student_A=Student()
student_A.say()

但是原来父类里面的say函数是不会被修改的

如果我们有一个函数需要一个特定的类的对象,那么可以这么定义

class Person:
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
    
class Student(Person):

    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
       
    def say(self):
        print("hello from a student")


def render(person: Student):
    person.say()

 我们使用上面这个代码里面的render函数时,特定了输入的person对象必须是Student类的结果。这个内容要么是Student类要么是他的子类造出的对象。

类属性的重写

和子类与父类的重写一样,如果子类下觉得父类的属性不好,也可以自己改

class Person:
    color="yellow"
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
     

class Student(Person):
    color="red"
    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
       
    def say(self):
        print("hello from a student")
    


def render(person: Student):
    person.say()

 但是存在一个问题,就是如果父类里面有个方法是要调用这个color的,那么这个方法,存在这个方法里面,然而子类的这个变量不一样,我们调用子类时候,父类这个方法输出的结果是什么呢

class Person:
    color="yellow"
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
    
    def print_color(self):
        print(self.color)
       
class Student(Person):
    color="red"
    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
       
    def say(self):
        print("hello from a student")
    
student_A=Student()
student.print_color()

而如果想让子类相同的函数继承父类相同函数的属性,就可以使用super的方法,例如

class Person:
    color="yellow"
    def __init__(self):
        print("这个方法被执行了")
        self.name = 'JACK'
    def say(self):
        print("hello from person")
    
    def print_color(self):
        print(self.color)
       
class Student(Person):
    color="red"
    def __init__(self):
        super().__init__()#####代表执行父类的__init__方法
        self.school='ABC'
       
    def say(self):
        super().say()
        print("hello from a student")
    
student_A=Student()
student.print_color()

 这个方法,一个类的对象,那么这个对象的范围,定义的类,就是这个函数的结果。

抽象类

更偏向于网络的设计,有的人经常写,有的人不怎么写。

抽象类不应该用来构造对象

这个类的名字就叫abc

from abc import ABC

class AbstractClassName(ABC):
    pass
print(AbstractClassName.__dict__)
    

这个抽象类的第一个结果就是你不能通过它造对象,那么这个对象就是了

Python——类(class)的定义及使用 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 Python入门之类(class) python中class的定义及使用 接下来我们先来简单的了解下面向对象的一些基本特征。 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。 ... 阅读详情

相关推荐

【Python】类(class)

classDog:#类属性#构造方法#实例属性#实例方法returnf"classDog:#类属性species="Canisfamiliaris"#构造方法def__init__(self,name,age):#实例属性self.name=nameself.age=age#实例方法defbark(self):returnf"{

weixin_59422604的博客 1456

python 中 Class(类)的详细说明,通俗易懂

通俗易懂的说明了python中有关Class的使用

qq_51409113的博客 2万+

【ComfyUI专栏】ComfyUI 单一节点类开发输出文本字符串

本文介绍了ComfyUI开发中自定义节点的实现方法。开发分为Python后端和JavaScript前端两部分,核心文件包括__init__.py(注册节点类)、Show_text_panel.py(节点逻辑)、requirements.txt(依赖库)和web目录(前端JS)。重点说明了如何定义节点类ComfyUIShowText,包括输入类型、处理函数和节点属性设置。在__init__.py中需要注册节点类并指定JS路径,通过NODE_CLASS_MAPPINGS等映射关系将节点整合到ComfyUI环境。

技术与管理的平衡木- 334

Python基础之:Python中的类

class是面向对象编程的一个非常重要的概念,python中也有class,并且支持面向对象编程的所有标准特性:继承,多态等。 本文将会详细讲解Python中class的信息。

程序那些事 7087

〖Python零基础入门篇㊲〗- 类的继承、多态与多重继承

什么是继承?在编程中继承的关系是类与类的一种关系。当我们定义了一个新的 类 时,可以从当前存在的 类 通过继承的关系得到其功能、属性等;被继承的 类 我们就叫做父类(也可以叫做基类或者超类),而新的 类 则叫做子类,且其具备父类的功能、属性与一些特性。

易编橙 · 终身成长社群,相遇已是上上签! 4万+

PX4飞控 vs 大疆A3:开源与闭源方案在无人机硬件架构中的实战对比

本文深入对比了PX4飞控与大疆A3在无人机硬件架构上的差异,分析了开源与闭源方案在工业级无人机开发中的优劣势。通过详细的硬件配置、传感器兼容性、扩展能力及性能测试数据,为开发者提供选型指南,特别适合需要自定义算法和复杂功能集成的项目。

a3b4c5的博客 888

python定义一个学生类_Python学习基础篇 -7:Python中的类(class)

Python学习基础篇 -7前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 。第七篇:Python中的类(class)类的必要性俗话说,物以类聚,人以群分。聚合的好处之一是管理方便,比如有50个学生是你的管理目标,那假设他们都分散在各个班里,如此一来就会造成管理上的极大不便。而聚合无疑是...

weixin_39908616的博客 1130

多重共线性问题 -- 岭回归方法

概述 本篇博客分为三大部分,线性模型、多重共线性问题和岭回归。其中,线性模型中介绍了线性模型定义和普通最小二乘法对线性模型的拟合。第二部分,借由1987-2007年的人口、消费和科技对碳排放的影响的数据来说明多重共线性问题(包括如何从定性和定量两个方面判断多重共线性问题)和多重共线性问题对普通最小二乘估计的影响。第三部分,使用岭回归对第二部分中的多重共线性问题进行拟合,并基于R2R^2R2决定系数...

楚江客的记录 1万+

Python面向对象编程02:深度认识类class

这次把类和对象的知识补充了一些(但是还有Python支持多继承,这跟Java是很大的区别!),有过半不是常见的。 但是在写框架或者深度分析的时候,非常有用,务必过一过熟悉一下。 学委写了十几年的Java了,但是写的这套Python教程非常务实,对基础编程有任何问题请查看相关文章。

持续学习持续开发,我是雷学委! 1933

ControlCAN.dll开发适配USBCAN_E/2E_U设备

摘要:本文提供了USBCAN_E/2E_U设备的配置指南:1)安装专用驱动;2)获取最新的ControlCAN.dll文件;3)修改VCI调用顺序,新增VCI_SetReference函数设置波特率;4)使用工具计算波特率配置值,并给出了常见波特率对应的代码参考值(如500K对应0x060007)。配置过程强调使用特定工具计算精确的波特率参数,并提供了相关软件下载链接。

weixin_43969033的博客 390

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

小邓子分享官的博客 1878

python summary_Python学习基础篇 -7:Python中的类(class)

Python学习基础篇 -7前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 。第七篇:Python中的类(class)类的必要性俗话说,物以类聚,人以群分。聚合的好处之一是管理方便,比如有50个学生是你的管理目标,那假设他们都分散在各个班里,如此一来就会造成管理上的极大不便。而聚合无疑是...

weixin_39559097的博客 138

电子病历编辑器源码(Springboot+原生HTML)

应用场景包括:电子病历书写、体温单录入、全平台信息采集、检验检查报告、不良事件上报等。 此外,电子病历编辑器软件还适用于医生工作站的病历编辑、护士工作站的护理记录输入、PASC/LIS/RIS报告编辑打印、病案首页、出院小结、病程记录、手术记录、各种知情书、康复及精神学科用的量表、临床路径用表单界面等等。 这些应用场景都涉及到了医疗文书编辑的需求,因此电子病历编辑器软件在这些场景中具有广泛的应用价值。

xingchen优快云的博客 3896

python中的新式类 和 经典类

class A(object): def foo(self): print("A::foo()") class B(A): pass class C(A): def foo(self): print("C::foo()") class D(B,C): pass d =

zhangdell的专栏 801

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 865

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

Python 后端开发技术博客专栏 | 第 07 篇 元类与类的创建过程 -- Python 最深层的魔法

是元类的类方法,它在执行类体代码之前被调用,返回一个映射对象作为命名空间。默认返回普通dict,但你可以返回或自定义映射来实现特殊行为。"""记录属性定义顺序的元类"""# 保存属性定义顺序(过滤掉 dunder 属性)return cls# 注意:Python 3.7+ 的 dict 已经保持插入顺序,# 所以这个例子主要是展示 __prepare__ 的机制实际应用场景:在 Python 3.6 之前,dict不保证顺序,对于需要保留字段定义顺序的 ORM 框架至关重要。

weixin_43674738的博客 274

基于STM32设计的指纹考勤机_348

随着信息化管理需求的日益增长,传统的人工考勤方式已难以满足现代社会对高效、精准和安全的考勤管理要求。为解决这一问题,本项目设计并实现了一款基于STM32的指纹考勤机系统。该系统采用AS608指纹识别模块进行人员身份识别,ESP8266无线模块实现与上位机APP的通信,支持人员信息录入、考勤时间段设置、考勤记录保存与查询等功能。系统通过SQLite数据库存储考勤数据,并提供导出EXCEL表格功能,方便数据管理与统计分析。该系统具有高效的考勤管理能力和良好的用户交互体验,能够广泛应用于企业、学校等机构的考勤管理

525

类的类装饰器简单实现思路及案例

本文介绍了类的类装饰器的另一种简单实现思路,其实无论是本文的实现思路还是上面引文的实现思路,案例都只能保障类对象的创建被装饰,如果需要对类的方法进行装饰,还需要单独的处理,我们将在后面的文章中进一步介绍。

老猿Python 2196

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

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

python面向对象编程class

1、访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 以__开头,为类私有变量,外部不可访问。privite 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是

alex1801 639

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Python系列专栏】第二十二篇 Python中的面向对象高级编程:使用元类

动态语言和静态语言最大的不同,就是在动态语言中,函数和类的定义,不是编译时定义的,而是运行时动态创建的。

Mrrunsen的博客 231

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python 类的使用(1) 之类使用的基本框架

我觉得Python的使用可以分三个阶段:1.直接写代码阶段,即一行一行的运行,没有任何函数。2.开始使用函数式编程。3.开始使用类。 类对于python来说真的非常好用,类不仅仅是在大型工作中可以用,即使在小型工作中也能够使用,使代码易于重用,易于构建,易于修改等等。快快使用或者学习起来吧! 本文将会分几个部分来对类的使用细化讲解,内容通俗易懂,希望能帮助到大家!

keepaware的博客 1667

[Python] 类的访问限制

然后,我们定义了一个公共方法 drive(),它可以在类的外部访问,并且使用getter和setter方法来管理变量 __max_speed 的值。举个例子,如果某个类中有个属性是用来存放年龄的,而有个方法需要用到这个年龄属性,并且是将这个年龄作为了除数,如果不小心设置或者输入年龄为0,那么就会导致程序出错。开头,则代表这个属性是私有属性,正常情况下是不可以在外部直接调用或修改该属性的。编程中介绍了类、对象的属性,按照属性的访问程度可以分为一般属性和私有属性。通常,在类、对象中,如果一个属性名以。

知智 5231

Python(10):类

写在前面 文章目录类一. 大致结构二. 方法三. 成员可见性四. 继承专栏目录 类 一. 大致结构 类名建议首字母大写,并以驼峰式命名 class Student(): # 定义类的全局变量 name = '' age = 10 二. 方法 一般方法 def print_file(self) print('name : ' + self.name) ...

MeiBlog 171

Python小姿势 - 如何使用Python的unittest模块进行单元测试

《100天精通Python》专栏,最详细的Python入门到精通教程;理论篇基础知识讲解构建体系框架、实践篇Python黑科技学以致用。https://blog.youkuaiyun.com/weixin_39032019/category_12263598.html

独木不成林,单弦不成音。 2907

python类私有变量

1、类list 1.1、__len__ __len__()方法我们也知道是为了能让class作用于len()函数。 1.2、__getitem__ Fib实例虽然能作用于for循环,看起来和list有点像,但是,把它当成list来使用还是不行,比如,取第5个元素: >>> Fib()[5] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError:

alex1801 1229
上一篇: python气象学习:台风频数时间序列趋势的显著性检验
Dovah1n
博客等级 码龄6年 404粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值