静态方法

Python类的静态属性、类方法、静态方法

本小妞迷上赌 提交于 2020-03-19 19:09:18
1、静态属性。@property。作用就是把类的函数属性,封装成类似数据属性。 class Student(object): school='szu' @property def printmassage(self): print('aaaa') s1=Student() s1.printmassage #aaaa 2、类方法:是类对象所拥有的方法,需要用修饰器 @classmethod 来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数,能够通过实例对象和类对象去访问。 类方法一般有两个作用:一是访问类属性。二是修改类属性 class Student(object): school='szu' @classmethod def printmassage(cls): print(cls.school) s1=Student() Student.printmassage() #szu s1.printmassage() #szu 3、静态方法:静态方法实际上是独立的,依靠在类中,但实际是只是调取关系。只是名义上归类管理,实际上就是一个工具包,可以供类和实例调用。静态方法里不能直接调用类方法,要调用必须加上类名字去调用。 class Student(object): school='szu' @staticmethod def printmassage

Ubuntu如何配置静态IP

给你一囗甜甜゛ 提交于 2020-03-19 07:14:53
Ubuntu编辑网卡配置静态地址时,有时候会失效,以下方法有效解决了该问题。 本文参考文章: https://linuxize.com/post/how-to-configure-static-ip-address-on-ubuntu-18-04/ 一、查看网卡名称ip address 二、编辑netplan网络管理工具 sudo vi /etc/netplan/01-network-manager-all.yaml #Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager ethernets: ens3: dhcp4: no dhcp6: no addresses: [192.168.0.222/24] #配置网卡IP gateway4: 192.168.0.1 #配置网关 nameservers: addresses: [114.114.114.114, 8.8.8.8] #配置DNS *温馨提示:编辑yaml文件时需严格按照格式来,空格不能使用Tab键缩进,每个冒号后边均有一个空格。* 使用以下命令应用配置即可 sudo netplan --debug apply #加--debug参数可以显示报错信息,进行调试 来源: 51CTO 作者

static修饰符

☆樱花仙子☆ 提交于 2020-03-18 19:29:49
static关键词:   用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。     它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化。     对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享。     可以使用“对象.类属性”来调用,不过一般都是用“类名.类属性”。     static变量置于方法区中   用static声明的方法为静态方法。     不需要对象,就可以调用(类名.方法名)     在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。 ===================================================================== static的基本规则:   1.类中的静态方法不允许调用非静态的属性和方法,只可以调用静态的属性和方法   2.可以用类名直接调用静态类中的属性和方法   3.静态方法中不允许出现this和super   4.静态方法不能被非静态方法覆盖   5.构造方法不允许声明static   6.静态变量为类变量,可以直接调   7.非静态变量为实例变量,通过实例调用 来源: https://www.cnblogs.com/zhou-xian-sheng/p/12519378.html

python类的静态方法和类方法区别

☆樱花仙子☆ 提交于 2020-03-18 14:52:24
先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。 # coding:utf-8 class Foo(object): """类三种方法语法形式""" def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmethod def static_method(): print("是静态方法") @classmethod def class_method(cls): print("是类方法") foo = Foo() foo.instance_method() foo.static_method() foo.class_method() print('----------------') Foo.static_method() Foo.class_method() 实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。 实例方法,第一个参数必须要默认传实例对象,一般习惯用self。 静态方法,参数没有要求。 类方法,第一个参数必须要默认传类,一般习惯用cls。 静态方法、类方法使用区别或者说使用场景 1、类方法用在模拟java定义多个构造函数的情况。

面向对象 三 (三大特性)

可紊 提交于 2020-03-18 07:47:39
封装,继承,多态 一: 了解什么是封装: 就象一个盒子,你不需要知道里面有什么东西,只知道它有那些用处就行,能够为你提供相对应的方法. 封装的意义: 封装的意义在于保护或者防止 代码 (数据)被我们无意中破坏。 保护成员属性,不让类以外的程序直接访问和修改; 隐藏方法细节 关于对象封装的原则: 内聚:内聚是指一个模块内部各个部分之间的关联程度 耦合:耦合指各个模块之前的关联程度 封装原则:隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别 在面向对象方法中,用类来实现上面的要求。用类实现封装,用封装来实现高内聚,低耦合。 1.1 了解访问权限修饰符 所谓访问权限,指的是本类的成员变量、成员方法和内部类对其他类的可见性。 Java一共有四种访问权限,按照权限由大到小分别为public、protected、default和private,如果省略了访问修饰符,那访问权限就是defualt。四种访问权限的含义和权限控制见下面表格: 注意:所谓的访问,有两种方式,直接访问和通过对象访问。 封装代码例: public class House { // 私有化属性 private String cookroom; private String bathroom; private String bedroom; private String parlor; public String

java 多态成员函数(静态与非静态)、成员变量特点

眉间皱痕 提交于 2020-03-17 17:47:43
非静态成员函数:   在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有,编译失败。   在运行时期:参阅对象所属的类中是否有调用的方法。 总结: 非静态成员函数在多态调用时,编译看左边,运行看右边。 在多态中成员变量的特点:    无论编译和运行都参考左边(引用型变量所属的类)。 静态成员函数:    无论编译和运行都参考左边(引用型变量所属的类)。 来源: https://www.cnblogs.com/hongxiao2020/p/12512134.html

java框架学习日志-7(静态代理和JDK代理)

╄→гoц情女王★ 提交于 2020-03-17 15:12:23
某厂面试归来,发现自己落伍了!>>> 静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理模式需要三个东西: 真实对象——厨师(chef),用户真正需要去用到的对象。 调用者——客人(Client),需要用到真实对象的对象。 代理对象——服务员(waiter),代理真实对象与调用者沟通的对象。 厨师需要有个炒菜的方法,服务员负责代理厨师,所以也需要有一个炒菜方法,为了保证两个对象的炒菜方法一致,需要一个接口。 public interface Cook { public void cook(String name);//传入菜品名字 } 然后chef实现这个接口 public class Chef implements Cook{ @Override public void cook(String name) { System.out.println("正在炒"+name); } } waiter也需要实现这个接口 public class Waiter implements Cook{ Chef chef; public Waiter(Chef chef) { //通过构造函数与获取chef的实例对象 this.chef = chef; }

Java初始化顺序

被刻印的时光 ゝ 提交于 2020-03-17 04:43:29
Java初始化顺序 1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test{ static Sample sam= new Sample("静态成员sam初始化"); Sample sam1= new Sample("sam1成员初始化"); static { System.out.println("static块执行"); if (sam== null )System.out.println("sam is null"); sam= new Sample("静态块内初始化sam成员变量"); } Test() { System.out.println("Test默认构造函数被调用"); } } //主函数 public static void main(String str[]) { Test a= new Test(); } 输出结果为: 静态成员sam初始化 -----静态成员初始化 static块执行 -----静态块被执行 静态块内初始化sam成员变量 ----静态块执行 sam1成员初始化 -----普通成员初始化 Test默认构造函数被调用

动态链接库dll的 静态加载 与 动态加载

[亡魂溺海] 提交于 2020-03-17 03:52:44
动态链接是指在生成可执行文件时不将所有程序用到的函数链接到一个文件,因为有许多函数在操作系统带的dll文件中,当程序运行时直接从操作系统中找 。 而静态链接就是把所有用到的函数全部链接到exe文件中。 动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入; 而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。 静态链接方法:#pragma comment(lib, "test.lib") ,静态链接的时候, 载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:LoadLibrary()/GetProcessAddress()和FreeLibrary() ,使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的 逻辑地址 ,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这种方式使程序初始化时间较短,但运行期间的性能比不上静态链接的程序。 1. 生成 静态链接库 newdll) win32项目 -> dll 添加.h文件 betabinlib.h #ifndef BETABINLIB_H #define BETABINLIB_H

设计模式——代理模式

霸气de小男生 提交于 2020-03-16 14:46:28
平时我们使用的框架中非常频繁地使用了动态代理。可以说如果一个框架不使用动态代理的话,这个框架不太可能做成一个通用的框架。因此动态代理的知识是我们必须要掌握的知识。 本博客是网络转载的,原文请点击 这里 代理模式简介 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题。(某些对象只想提供部分方法让外部对象访问) 代理模式是一种常用的结构型设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息( beforeAdvice ),过滤消息并转发消息,以及进行消息被委托类执行后的后续处理( afterAdvice ) 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。 通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性 。 更通俗的说,代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让我们只了解代理类即可,而且代理的出现还可以让我们完成与另一个类之间的关系的统一管理,但是切记,代理类和委托类要实现相同的接口,因为代理真正调用的还是委托类的方法。 使用场景 方法增强(添加注解实现一些额外的功能) AOP 等 代理模式分类 按照代理的创建时期