python class详解
发布网友
发布时间:2024-09-07 00:25
我来回答
共1个回答
热心网友
时间:2024-10-20 05:54
1. 类(Class):
2. 对象(object):类的实例化为对象
类变量和实例变量
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将其值改变,其他对象得到的就是改变后的结果;而实例变量属于对象私有,某一个对象将其值改变,不影响其他对象;
调用属性调用方法
注意:类里面的变量称之为属性,类里面的函数称之为方法
self的解释:
方法里面的self代表的是当前类的实例化后的对象
self不是只能叫self,其他的也可以,但规范来说都使用self,在此代码中,a就是实例化的对象,那么参数传递后,就相当于demo(a)将实例a中的数值传入demo方法中。
return 方法的返回值
和函数一样,代码遇到return下面就不在执行,会将值返回给调用处
没有return的方法,打印调用处的值为 None
用def语句创建函数时,可以用return语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行。
函数中,使用return语句的语法格式如下
二、创建一个类
类的初始化:这里需要较多的知识,所以直接转载了我看过最好的关于这方面的文章,引自 Python 中类和实例的通俗讲解_Four_Infinite的博客-CSDN博客。注意,类的名称一般用大写字母开头,这是惯例。当然,如果故意不遵循此惯例,也未尝不可,但是,会给别人阅读乃至于自己以后阅读带来麻烦。既然大家都是靠右走的,你就别非要在路中间睡觉了。接下来,一般都要编写构造函数,在写这个函数之前,先解释一下什么是构造函数。
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
上面的类中,首先呈现出来的是一个名为:init()的函数,注意,这个函数是以两个下划线开始,然后是init,最后以两个下划线结束。这是一个函数,就跟我们此前学习过的函数一样的函数。但是,这个函数又有点奇特,它的命名是用“__”开始和结束。
请看官在这里要明确一个基本概念,类就是一种对象类型,和跟前面学习过的数值、字符串、列表等等类型一样。比如这里构建的类名字叫做Person,那么就是我们要试图建立一种对象类型,这种类型被称之为Person,就如同有一种对象类型是list一样。
在构建Person类的时候,首先要做的就是对这种类型进行初始化,也就是要说明这种类型的基本结构,一旦这个类型的对象被调用了,第一件事情就是要运行这个类型的基本结构,也就是类Person的基本结构。就好比我们每个人,在头脑中都有关于“人”这样一个对象类型(对应着类),一旦遇到张三(张三是一个具体人),我们首先运行“人”这个类的基本结构:一个鼻子两只眼,鼻子下面一张嘴。如果张三符合这个基本机构,我们不会感到惊诧(不报错),如果张三不符合这个基本结构(比如三只眼睛),我们就会感到惊诧(报错了)。
由于类是我们自己构造的,那么基本结构也是我们自己手动构造的。在类中,基本结构是写在init()这个函数里面。故这个函数称为构造函数,担负着对类进行初始化的任务。
还是回到Person这个类,如果按照上面的代码,写好了,是不是init()就运行起来了呢?不是!这时候还没有看到张三呢,必须看到张三才能运行。所谓看到张三,看到张三这样一个具体的实实在在的人,此动作,在python中有一个术语,叫做实例化。当类Person实例化后立刻运行init()函数。
这里主要解释了为什么会有_init__()这个方法,它的目的就是把创建的类这个对象类型是什么样的具体说明。
在上面的代码中,建立的类Person,构造函数定义了这个类的基本结构:name,lang,website。注意观察:info=Person(“qiwsir”,”python”,”qiwsir.github.io”),这句话就是将类Person实例化了。也就是在内存中创建了一个对象,这个对象的类型是Person类型,这个Person类型是什么样子的呢?就是init()所构造的那样。在实例化时,必须通过参数传入具体的数据:name=”qiwsir”,lang=”python”,website=”qiwsir.github.io”。这样在内存中就存在了一个对象,这个对象的类型是Person,然后通过赋值语句,与变量info建立引用关系。
我这里的理解是在info对应着self, info.name就相当于self.name,而这里info.name=qiwsir,是将info.name赋值成了qiwsir,但是class里面的self.name值还是name
类的调用
热心网友
时间:2024-10-20 05:53
1. 类(Class):
2. 对象(object):类的实例化为对象
类变量和实例变量
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将其值改变,其他对象得到的就是改变后的结果;而实例变量属于对象私有,某一个对象将其值改变,不影响其他对象;
调用属性调用方法
注意:类里面的变量称之为属性,类里面的函数称之为方法
self的解释:
方法里面的self代表的是当前类的实例化后的对象
self不是只能叫self,其他的也可以,但规范来说都使用self,在此代码中,a就是实例化的对象,那么参数传递后,就相当于demo(a)将实例a中的数值传入demo方法中。
return 方法的返回值
和函数一样,代码遇到return下面就不在执行,会将值返回给调用处
没有return的方法,打印调用处的值为 None
用def语句创建函数时,可以用return语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行。
函数中,使用return语句的语法格式如下
二、创建一个类
类的初始化:这里需要较多的知识,所以直接转载了我看过最好的关于这方面的文章,引自 Python 中类和实例的通俗讲解_Four_Infinite的博客-CSDN博客。注意,类的名称一般用大写字母开头,这是惯例。当然,如果故意不遵循此惯例,也未尝不可,但是,会给别人阅读乃至于自己以后阅读带来麻烦。既然大家都是靠右走的,你就别非要在路中间睡觉了。接下来,一般都要编写构造函数,在写这个函数之前,先解释一下什么是构造函数。
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
上面的类中,首先呈现出来的是一个名为:init()的函数,注意,这个函数是以两个下划线开始,然后是init,最后以两个下划线结束。这是一个函数,就跟我们此前学习过的函数一样的函数。但是,这个函数又有点奇特,它的命名是用“__”开始和结束。
请看官在这里要明确一个基本概念,类就是一种对象类型,和跟前面学习过的数值、字符串、列表等等类型一样。比如这里构建的类名字叫做Person,那么就是我们要试图建立一种对象类型,这种类型被称之为Person,就如同有一种对象类型是list一样。
在构建Person类的时候,首先要做的就是对这种类型进行初始化,也就是要说明这种类型的基本结构,一旦这个类型的对象被调用了,第一件事情就是要运行这个类型的基本结构,也就是类Person的基本结构。就好比我们每个人,在头脑中都有关于“人”这样一个对象类型(对应着类),一旦遇到张三(张三是一个具体人),我们首先运行“人”这个类的基本结构:一个鼻子两只眼,鼻子下面一张嘴。如果张三符合这个基本机构,我们不会感到惊诧(不报错),如果张三不符合这个基本结构(比如三只眼睛),我们就会感到惊诧(报错了)。
由于类是我们自己构造的,那么基本结构也是我们自己手动构造的。在类中,基本结构是写在init()这个函数里面。故这个函数称为构造函数,担负着对类进行初始化的任务。
还是回到Person这个类,如果按照上面的代码,写好了,是不是init()就运行起来了呢?不是!这时候还没有看到张三呢,必须看到张三才能运行。所谓看到张三,看到张三这样一个具体的实实在在的人,此动作,在python中有一个术语,叫做实例化。当类Person实例化后立刻运行init()函数。
这里主要解释了为什么会有_init__()这个方法,它的目的就是把创建的类这个对象类型是什么样的具体说明。
在上面的代码中,建立的类Person,构造函数定义了这个类的基本结构:name,lang,website。注意观察:info=Person(“qiwsir”,”python”,”qiwsir.github.io”),这句话就是将类Person实例化了。也就是在内存中创建了一个对象,这个对象的类型是Person类型,这个Person类型是什么样子的呢?就是init()所构造的那样。在实例化时,必须通过参数传入具体的数据:name=”qiwsir”,lang=”python”,website=”qiwsir.github.io”。这样在内存中就存在了一个对象,这个对象的类型是Person,然后通过赋值语句,与变量info建立引用关系。
我这里的理解是在info对应着self, info.name就相当于self.name,而这里info.name=qiwsir,是将info.name赋值成了qiwsir,但是class里面的self.name值还是name
类的调用