练习|学习笔记

简介: 快速学习练习

开发者学堂课程【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 开发框架 JSON
honeycomb使用|学习笔记
快速学习honeycomb使用
719 0
honeycomb使用|学习笔记
|
消息中间件 存储 NoSQL
|
Kubernetes Cloud Native Linux
K8S 初识_K8S 初识 | 学习笔记
快速学习 K8S 初识_K8S 初识
145 0
K8S 初识_K8S 初识 | 学习笔记
|
机器学习/深度学习 算法 开发者
神经元模型|学习笔记
快速学习神经元模型
神经元模型|学习笔记
|
NoSQL MongoDB 开发者
故障测试2|学习笔记
快速学习故障测试2
故障测试2|学习笔记
|
物联网 Linux 开发者
|
机器学习/深度学习 算法 开发者
神经元模型| 学习笔记
快速学习神经元模型。
神经元模型| 学习笔记
|
C++ 开发者 Python
|
机器学习/深度学习 算法 数据挖掘
总结与回顾 | 学习笔记
快速学习总结与回顾