python基础教程:定义类创建实例
类的定义
在Python中,类通过class关键字定义,类名以大写字母开头
>>>class Person(object): #所有的类都是从object类继承
pass #pass先不做任何处理,先跳过,为了防止语法错误
创建类的属性
>>> 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'
实例的创建
创建实例使用 类名+(),类似函数调用的形式创建:
例如:
>>> class Person(object):
pass
>>> p1 = Person() #创建实例
>>> p1.name = 'Bart' #创建实例属性
>>> p2 = Person()
>>> p2.name = 'Adam'
初始化实例属性
>>> 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())
注意:
下划线和双下划线的区别:
以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,那么以_开头的名称都不会被导入,即不能用from xxx import *而导入,除非模块或包中的__all__列表显式地包含了它们;
以双下划线开头的__foo代表类的私有成员,只有类本身能访问,其子类对象也不能访问到这个数据。
python基础教程:定义类创建实例的更多相关文章
- Python 基础教程 —— Pandas 库常用方法实例说明
目录 1. 常用方法 pandas.Series 2. pandas.DataFrame ([data],[index]) 根据行建立数据 3. pandas.DataFrame ({dic}) ...
- python之定义类创建实例
https://www.cnblogs.com/evablogs/p/6688938.html 类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 1 2 >>&g ...
- 2015/9/20 Python基础(16):类和实例
面向对象编程编程的发展已经从简单控制流中按步的指令序列进入到更有组织的方式中,依靠代码块可以形成命名子程序和完成既定的功能.结构化的或过程性编程可以让我们把程序组织成逻辑快,以便重复或重用.创造程序的 ...
- Python基础:18类和实例之二
1:绑定和非绑定 当存在一个实例时,方法才被认为是绑定到那个实例了.没有实例时方法就是未绑定的.在很多情况下,调用的都是一个绑定的方法. 调用非绑定方法并不经常用到,其中一个主要的场景是:派生一个子类 ...
- Python基础:17类和实例之一(类属性和实例属性)
1:类通常在一个模块的顶层进行定义.对于Python来说,声明与定义类是同时进行的. 2:类属性仅与其类相绑定,类数据属性仅当需要有更加“静态”数据类型时才变得有用,这种属性是静态变量.它们表示这些数 ...
- python基础教程:包的创建及导入
包是一种通过用“带点号的模块名”来构造 Python 模块命名空间的方法. 例如,模块名 A.B 表示 A 包中名为 B 的子模块.正如模块的使用使得不同模块的作者不必担心彼此的全局变量名称一样,使用 ...
- Python基础:19类和实例的内建函数
1:issubclass() issubclass()布尔函数,判断一个类是否是另一个类的子类或子孙类.它有如下语法:issubclass(sub,sup) 这个函数也允许“不严格”的子类,意味着,一 ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算是 ...
随机推荐
- (十一)React Ant Design Pro + .Net5 WebApi:后端环境搭建-IdentityServer4(三)持久化
一.前言 IdentityServer配合EFCore持久化,框架已经为我们准备了两个上下文: ConfigurationDbContext:配置数据(资源.客户端.身份等) PersistedGra ...
- 2022.02.21 UB
2022.02.21 UB 参考资料: https://zhuanlan.zhihu.com/p/141467895 https://blog.csdn.net/ghscarecrow/article ...
- 11.Flink实时项目之支付宽表
支付宽表 支付宽表的目的,最主要的原因是支付表没有到订单明细,支付金额没有细分到商品上, 没有办法统计商品级的支付状况. 所以本次宽表的核心就是要把支付表的信息与订单明细关联上. 解决方案有两个 一个 ...
- Apache Hudi 如何加速传统的批处理模式?
1. 现状说明 1.1 数据湖摄取和计算过程 - 处理更新 在我们的用例中1-10% 是对历史记录的更新.当记录更新时,我们需要从之前的 updated_date 分区中删除之前的条目,并将条目添加到 ...
- docker:compose实战
1.用docker-compose拉起三个容器:nginx->ghost博客平台->mysql,拉起后可以直接访问ghost博客平台 2.目录结构: ghost: data docker- ...
- 架构师必备:Redis的几种集群方案
结论 有以下几种Redis集群方案,先说结论: Redis cluster:应当优先考虑使用Redis cluster. codis:旧项目如果仍在使用codis,可继续使用,但也推荐迁移到Redis ...
- Vue.js 3.x 中跨层级组件如何传递数据?
provide/inject 基本用法 在 Vue.js 中,跨层级组件如果想要传递数据,我们可以直接使用 props 来将祖先组件的数据传递给子孙组件: 注:上图来自 Vue.js 官网:Prop ...
- RESTFul是一种风格
只要符合RESTFul风格的,都可以叫做使用了RESTFul架构,一般的网站里传数据,都是用的?a=1&b=2...如果是RESTFul风格的话,就会是/a/1/b/2..类似于这样的方式来传 ...
- Promise与async/await与Generator
Promise是什么: Promise是异步微任务(process.nextTick.Promise.then() catch() finally()等),用于解决异步多层嵌套回调的问题(回调地狱-- ...
- 一文彻底搞懂JavaScript中的prototype
prototype初步认识 在学习JavaScript中,遇到了prototype,经过一番了解,知道它是可以进行动态扩展的 function Func(){}; var func1 = new Fu ...