一、Python文件的调用(待补充)
Python文件都是以.py文件进行存储的,通常说的调模块(而调包是指调用包含多个.py文件的文件夹)就是指调用.py文件,python调包可以分为几个层级,分别记录如下:
- 两个.py文件在同一个目录下:(如在A.py中调用B.py文件中的c函数)
import B
if __name__ == "__main__":
B.C(x, y)
(import 用于调用.py文件,from...impot ... 用于调用.py文件中的类(class))
或者只需要调用B中的C函数
from B import C
if __name__ == "__main__":
c(x, y)
二、类(class)相关内容
类不存在于内存中,只有在创建实例的时候才会在内存中创建一个类的新实例
·修饰符号
@staticmethod
在类中定义方法时,如果该方法不涉及对属性的操作,则该方法会被认为是一个静态方法,而不是类方法,要加上@staticmethod装饰器进行修饰
@property
类里面的方法一旦被@property装饰,就可以像调用属性一样地去调用这个方法,它能够简化调用者获取数据的流程,而且不用担心将属性暴露出来,有人对其进行赋值操作
需要注意的两点是:
·调用被装饰方法的时候是不用加括号的
·方法定义的时候有且只能有self一个参数
简言之,就是调用类里面的方法时,不用跟上括号且括号里不用赋予具体的数字,不会暴露属性
@classmethod
一般在类中定义的方法,生成实例后就只能通过:实例名.方法名 的形式调用,而类方法使用@classmethod标志,类方法可以用:实例名.方法名 的形式调用,也可以用:类名.方法名 的形式调用
区别:
实例方法被绑定到一个实例,只能通过实例进行调用;
但是对于静态方法和类方法,可以通过类名和实例两种方式进行调用;
·类的属性
·私有属性和公有属性
私有属性:函数、方法或者属性的名称以两个下划线__开始则为私有类型,私有类型不能通过外部(实例)进行调用,会出现报错
如图,通过实例调用私有属性__.salary时会出现报错(AttributeError属性错误) ,查找不到该属性,对于类中方法:__secret(),外部调用时也会报错
公有属性:函数、方法或属性的名称下面没有两个下划线开始,则为公有属性
具体分类:
在类体中,根据定义变量的位置不同,以及定义的方式不同,细分为以下几类:
·1、类体中,所有方法外:在此范围内定义的变量称为类属性或类变量(可以理解成类中的全局变量)
特点:类变量可以被所有实例化对象同时共享,既可以用类名调用,也可以用实例名调用,通过类名调用可以修改类变量的值,注意会在所有实例化对象中改变类变量的值(推荐通过类名的方式来调用变量)
class test(object):
name = "WZY"
age = "20"
def __init__(self, a, b):
self.a = a
self.b = b
上图中的name和age就是类变量,可以通过:
print(test.name)
********************
Test = test()
print(Test.name)
两种方法调用
·2、类体中,所有方法内,并且以“self.变量名”的方式定义:以这种方式定义的变量称为实例属性或者实例变量
特点:实例变量只能通过对象名访问,无法通过类名访问。需要注意的是:__init__()构造函数因为在创建实例时就会自动调用,因为其中的属性在实例中也会自动存在,成为实例变量。而class中的其他方法中的属性则只有在实际调用对应方法时才会成为实例变量
class test(object):
name = "WZY"
age = "20"
def __init__(self, a, b):
self.a = a
self.b = b
def test1(self):
self.c = c
如:a、b在生成实例时会自动成为实例变量,而c则只会在调用test1时才变成实例变量
code1 = test()
code1.test1()
在这之后,c才会变成实例变量
·3、类体中、所有方法内,并且以“变量名=变量值”的方式定义:以这种方式定义的变量称为局部变量
特点:定义局部变量是为了所在类方法功能的实现。局部变量只能用于所在函数中,函数执行完成后,局部变量即销毁
class test(object):
name = "WZY"
age = "20"
def __init__(self, a, b):
self.a = a
self.b = b
def test1(self):
self.c = c
d = 26
上面的d就是局部变量,局部变量也不能被外部所引用
·4、类体外:这种变量称为全局变量
三、class()和class(object)的区别(待补充)
四、类的继承
类的继承通常用在创建和现在功能类似的新类,即利用现有类中的一些方法、属性,再加上一些新添加的属性和方法生成一个具有特定功能的新类,可以高效的实代码重复使用
下图中,在test1括号中写入test,就是一种继承,test1是子类,test是父类(基类):
继承格式:class 类名(父类1, 父类2,...):
#类定义部分
PS:如果类没有显式指定继承自哪个类,则默认继承object类(object类是python所有类的父类)
class test(object):
def print(self, context):
print("姓名:",context)
class test1(test):
def age(self):
... ...
声明:本文是本人在学习python时记录的个人笔记,不做商业用途,如有疑问,可留言讨论。
文章部分内容参考文章,如有侵权联系删除: