练习|学习笔记

简介: 快速学习练习

开发者学堂课程【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):

相关文章
|
存储 SQL Java
JAP4|学习笔记
快速学习JAP4
210 0
JAP4|学习笔记
|
开发者
需要、欲望、需求 | 学习笔记
快速学习需要、欲望、需求。
231 0
需要、欲望、需求 | 学习笔记
|
NoSQL MongoDB 开发者
故障测试_1|学习笔记
快速学习故障测试_1
故障测试_1|学习笔记
|
开发工具
超详细的vimtutor学习笔记(上)
第一讲 编辑 1.1 移动光标 使用 h、j、k、l 键可以使光标实现左、下、上、右的移动。 也可以使用 ↑ ↓ ← → 进行上下左右的移动。
136 0
|
人工智能 开发者
特征空间与应用 | 学习笔记
快速学习特征空间与应用
特征空间与应用 | 学习笔记
|
Java 开发工具 C++
notepad++ 介绍|学习笔记
快速学习 notepad++ 介绍
notepad++ 介绍|学习笔记
|
Java 开发者 Python
Self 的介绍 | 学习笔记
快速学习 Self 的介绍
Self 的介绍 | 学习笔记
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
BinaryTree|学习笔记
|
XML 设计模式 JavaScript
回顾 | 学习笔记
快速学习回顾,介绍了回顾系统机制, 以及在实际应用过程中如何使用。
|
机器学习/深度学习 算法 开发者
总结与回顾| 学习笔记
快速学习总结与回顾。

热门文章

最新文章