记录初学python的一些易混点

一、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时记录的个人笔记,不做商业用途,如有疑问,可留言讨论。

文章部分内容参考文章,如有侵权联系删除:

Python类变量和实例变量(类属性和实例属性)在类体内定义的变量,默认属于类本身。如果把类当成类命名空间,那么该类变量其实就是定义在类命名空间内的变量,在类命名空间内定义的变量就属于类变量,Python 可以使用类来读http://c.biancheng.net/view/2283.html

Python 笔记(19)— 类属性(私有属性、公有属性、实例属性、局部变量)、类方法(实例方法、静态方法)、类继承、多重继承_wohu1104的博客-CSDN博客_python私有属性可以继承吗1. 创建类类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。类不存在于内存中,因此它本身并不是对象。当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例,即对象。虽然只有一个类,但能以这个类在内存中创建多个相同类型的对象。class Person(object): #类的方法中必须要有一个self参数,但是方法被调用时,不用传递这个参数.....................https://blog.csdn.net/wohu1104/article/details/89424370

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值