https://www.cnblogs.com/evablogs/p/6688938.html

类的定义

在Python中,类通过class关键字定义,类名以大写字母开头

1
2
>>>class Person(object):           #所有的类都是从object类继承
              pass                 #pass先不做任何处理,先跳过,为了防止语法错误
 
创建类的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> class Person(object):
         address = 'Earth'                       #类的属性直接在类内部定义,当实例属性和类属性重名时,实例属性优先级高
         def __init__(self, name):
                self.name = name
>>> Person.address                               #直接通过类.属性可以访问
'Earth'
>>>p1=Person('A')                               
>>>p1.address                                    #通过创建类的实例,也可以通过实例.属性访问
'Earth'
>>> Person.address='KKKK'                        #类的属性可以动态修改
>>> Person.address
'KKKK'
>>>p1.address                                    #类的属性一经修改,所有访问的属性值也随之更改
'KKKK'
实例的创建

创建实例使用 类名+(),类似函数调用的形式创建:

例如:

1
2
3
4
5
6
7
>>> class Person(object):
             pass
 
>>> p1 = Person()                      #创建实例
>>> p1.name = 'Bart'                   #创建实例属性
>>> p2 = Person()
>>> p2.name = 'Adam'

 初始化实例属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> class Person(object):
             class=1                                              #定义类属性
             def __init__(self, name,age):         #__init__(self,属性1,属性2....):self代表实例,通过self访问实例对象的变量和函数
             self.name = name
             self.__age=age                                        #实例的私有属性无法从外部访问,但是,从类的内部是可以访问的
#定义实例方法
             def get_name(self):
                   return self.__age                              #实例方法,定义在类内部,可以访问实例的私有属性__age
#定义类方法
             @classmethod
             def how_many(cls):                                   #通过@classmethod标记类方法,类方法的第一个参数为cls,cls.class相当于Person.class
                  return cls.class                                #类方法中无法调用任何实例的变量,只能获得类引用
>>> p1 = Person('Bob',12)
>>> print p1.get_age()                                            #实例方法的调用,self不需要显式传入

注意:

下划线和双下划线的区别:

以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,那么以“_”开头的名称都不会被导入,即不能用“from xxx import *”而导入,除非模块或包中的“__all__”列表显式地包含了它们;

以双下划线开头的(__foo)代表类的私有成员,只有类本身能访问,其子类对象也不能访问到这个数据。

python之定义类创建实例的更多相关文章

  1. python基础教程:定义类创建实例

    类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 >>>class Person(object): #所有的类都是从object类继承 pass #pass ...

  2. Python学习:类和实例

    Python学习:类和实例 本文作者: 玄魂工作室--热热的蚂蚁 类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规 ...

  3. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  4. Python学习_11_类和实例

    类和实例 类是对象创建实例的模板,而实例则是对象的实体.类使用class关键字定义: class MyClass:    pass python中创建实例直接使用工厂函数(类名加上一对括号),和其他的 ...

  5. Python进阶_类与实例

    上一节将到面对对象必须先抽象模型,之后直接利用模型.这一节我们来具体理解一下这句话的意思. 面对对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如studen ...

  6. Python面向对象编程 -- 类和实例、访问限制

    面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...

  7. Python 面向对象基础(类、实例、方法、属性封装)

    python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...

  8. Python面向对象:类、实例与访问限制

    首先记录下面向对象的名词: 对象:python万物皆对象,程序设计的东西在对象上体现. 类:具有相同属性和行为的对象的集合. 消息:各个对象之间通过消息相互联系. 方法:对象功能实现的过程. 封装:把 ...

  9. 廖雪峰Python学习笔记——类和实例

    Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...

随机推荐

  1. javascript语言精粹-笔记

    walkDOM function walkTheDOM(node, func) { func(node); node = node.firstChild; while (node) { walkThe ...

  2. 激活效能,CODING 敏捷研发模块上线

    昨晚,巴黎圣母院失火,而我们当中的许多人都还没来得及去欣赏它的真容.我们曾以为美好的事物会等待我们,伟大的目标也会等待我们.世事无常,唯一不变的就是变化.在软件研发领域,敏捷研发就是这么一个小步快跑来 ...

  3. 1、Linux命令随笔

    1 Linux命令总结 2 3 man ==命令帮助; 4 help ==命令的帮助(bash的内置命令); 5 ls ==list,查看目录列表; 6 -ld:查看目录权限; 7 -l:(long) ...

  4. PyQt5 api 帮助文档

    学习PyQt5的帮助文档是通过,使用help(PyQt5 class)的方式在console端输出帮助内容,常用的方法和属性查找起来不是很方便,现在放在网上以方便大家使用. QWidget Qt QM ...

  5. eShopOnContainers 知多少[3]:Identity microservice

    首先感谢晓晨Master和EdisonChou的审稿!也感谢正在阅读的您! 引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认 ...

  6. C#实现将Chart图表生成JPG图片的方法

    SaveFileDialog savefile= new SaveFileDialog();            savefile.Filter = "JPEG文件|*.jpg" ...

  7. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期

    回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十二║Vue实战:个人博客第一版(axios+router)

    前言 今天正式开始写代码了,之前铺垫了很多了,包括 6 篇基础文章,一篇正式环境搭建,就是为了今天做准备,想温习的小伙伴可以再看看<Vue 基础入门+详细的环境搭建>,内容很多,这里就暂时 ...

  9. 从ASP.NET Core2.2到3.0你可能会遇到这些问题

    趁着假期的时间所以想重新学习下微软的官方文档来巩固下基础知识.我们都知道微软目前已经发布了.NET Core3.0的第三个预览版,同时我家里的电脑也安装了vs2019.So,就用vs2019+.NET ...

  10. .NET Core 使用NLog日志记录

    前言 每个项目都会需要使用到日志功能,这对于项目上线后 出现的bug异常,能及时定位和便于后期错误分析.那我们今天来看看在.NET Core中如何使用NLog日志. NLog 什么是NLog呢? NL ...