练习|学习笔记

简介: 快速学习练习

开发者学堂课程【Python 入门 2020年版练习4】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10384


练习


内容介绍:

一、通过 init 方法计数 

二、通过 new 方法计数

三、优化 

 

一、通过 init 方法计数

# 定义—个类属性,记录通过这个类创建了多少个对象

Class Person(object):

count = 0 

def  init (self,name,age):

Person.count += 1

self.name = name

self.age = age 

# 每次创建对象,都会调用 new 和 init 方法

p1 = Person(‘张三’,18)

p2 = Person( '李四",19)

p3 = Person( ‘jack’, 20)

print(Persort.count)

创建 p1、p2、p3三个对象,每次创建对象,都会调用 new  init 方法,在 init 下添加 Person.count += 1每次调用时count 都会加一,即可实现计数。 

 

二、通过 new 方法计数

Class Person(object):

count = 0

def  new (cls, *args,**kwargs):

cls.count += 1

x = object. new (cls) # 申请内存,创建一个对象,并设置类型是 Person 类

return x

def _init_(self,name,age) :

# Person .count += 1

self.name = name

self.age = age

# 每次创建对象,都会调用 new  init 方法

# 调用 new 方法,用来申请内存

# 如果不重写 new 方法,它会自动找 object 的 new 

# object 的 new 方法,默认实现是申请了一段内存,创建一个对象 

p1 = Person(‘张三’,18)

p2 = Person(‘李四’,19)

p3 = Person( ‘jack’ , 20)

print(p1,p2,p3)

p4 = object. new (Person)  # 申请了内存,创建了一个对象,被设置它的类型是 Person

p4. init ( ‘tony’ , 23)

print(p4)

每次创建对象都会调用 new  init 方法,调用 new 方法用来申请内存,如果不重写 new 方法,它会自动找 object 的 new  object 的 new 方法,默认实现是申请了一段内存,创建一个对象。如果想要创建一个对象还可以用p4的方法。

 new 方法里加入 cls.count += 1即可实现计数。 

 

三、优化

class Person(object):

count = 0  # 类属性 

def _new_(cls,*args,**kwargs):

cls. count += 1

x = object._new_(cls)  # 申请内存,创建一个对象,并设置类型是 Person类

return x

def  init_(self,name,age):

# Person.count += 1

self.name = name

self.age = age

@classmethod

def get_count(cls):

return cls. count

p1 = Person(‘张三’,18)

p2 = Person(‘李四’,19

p3 = Person( ‘jack’ , 20)

print(p1, p2,p3)

print(Person.get_count())

目前的代码 count 可以被在外部改变,将 count 重命名为 count 变为私有属性。 

外部想访问可以创建一个类方法 def get_count(cls):

相关文章
|
存储 C语言 C++
C++学习笔记(day1)
C++学习笔记(day1)
|
开发者 索引
matchAllQuery | 学习笔记
快速学习 matchAllQuery
matchAllQuery | 学习笔记
|
存储 消息中间件 弹性计算
尘央大佬带你学| 学习笔记
快速学习尘央大佬带你学。
尘央大佬带你学| 学习笔记
|
算法 计算机视觉
OpenCV学习笔记--SIFT,SUFT
图像处理两大特征提取算法
139 0
|
开发工具 Android开发 iOS开发
快速开始|学习笔记
快速学习快速开始
112 0
快速开始|学习笔记
|
人工智能 开发者
特征空间与应用 | 学习笔记
快速学习特征空间与应用
特征空间与应用 | 学习笔记
|
SQL 分布式计算 资源调度
StreamSQL|学习笔记
快速学习 StreamSQL
StreamSQL|学习笔记
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
BinaryTree|学习笔记
|
XML 设计模式 JavaScript
回顾 | 学习笔记
快速学习回顾,介绍了回顾系统机制, 以及在实际应用过程中如何使用。
|
机器学习/深度学习 算法 Serverless
总结与回顾| 学习笔记
快速学习总结与回顾。
下一篇
无影云桌面