Pytthon面向对象的学习

面向对象

类的封装

1.类的定义

首先我们需要创建一个类,一个类中可以包含各种类属性(根据需求),方法(自定义函数)
class 类名 → class Person: (比如定义一个人类,其中通常类名首字母大写)
类下面缩进再进行对属性和函数的定义:

类中常用几个方法:
# init一般用于初始化实例对象基本信息
__init__(self,属性...)
# str一般用于格式化输出实例对象内容
__str__(self) 
# del一般在定义实例对象消亡时自动调用该方法,该对象消亡后内存地址回收与同名重建时内存地址不同
__del__(self)
# 以上方法均在接手定义对象内容后自动调用
# 在实例对象输出该方法可以查询到该对象在内存中的所有信息
实例对象.__dict__

# self函数 以下对象谁调用就指向哪个对象

2.实例对象的创建

创建一个实例对象,并使该对象调用类中的方法、属性、实例属性:
变量名 = 类名( ) ------ 括号内填与init对应数量的实例属性内容,
变量名.方法() ------ 调用类中定义的函数

3.封装

例子:👇(我们可以通过创建的类,创建不同实例对象进行输出)

# 定义一个人类
class Person: # (通常 类首字母大写)
	def __init__(self,name,age,weight):
		self.name = name # 接收定义实例对象的姓名
		self.age = age # 接收定义实例对象的年龄
		self.weight = weight # 接收定义实例对象的体重
	
	def eat(self):
		print("再来点") # 定义一个函数增加体重
		weight += 0.5
	
	def run(self):
		print("还搁这吃呢,跑步去") # 定义一个函数减少体重
		weight -= 0.5
	
	def __str__(self):
		# 输出对象内容 
		return "你的名字是{},今年{}岁,通过努力后的体重是{}"\
			.format(self.name,self.age,self.weight)

person1 = Person("陈某",18,70) # 创建一个实例对象
print(person1)
person1.eat()
person1.eat()
print(person1)
person1.run()
person1.run()
print(person1)

"""
你的名字是陈某,今年18岁,通过努力后的体重是70
再来点
再来点
你的名字是陈某,今年18岁,通过努力后的体重是72
还搁这吃呢,跑步去
还搁这吃呢,跑步去
你的名字是陈某,今年18岁,通过努力后的体重是71.0
"""

4.私有属性

# 定义一个人类
class Person:  # (通常 类首字母大写)
    def __init__(self, name, weight):
        self.name = name  # 接收实例对象的姓名
        self.__weight = weight  # 接收实例对象的体重

    def __str__(self):
        # 输出对象内容
        return "你的名字是{},体重是{}".format(self.name,self.__weight)


person1 = Person("陈某",70)
person1.__weight = 100
print(person1)
print(person1.__dict__)
"""
你的名
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,这里是一个简单的强化学习神经网络的Python代码,它使用PyTorch实现DQN算法: ```python import torch import torch.nn as nn import torch.optim as optim class DQN(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(DQN, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, hidden_size) self.fc3 = nn.Linear(hidden_size, output_size) def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.fc3(x) return x class Agent(object): def __init__(self, input_size, hidden_size, output_size, lr): self.dqn = DQN(input_size, hidden_size, output_size) self.optimizer = optim.Adam(self.dqn.parameters(), lr=lr) self.loss_fn = nn.MSELoss() def act(self, state): q_values = self.dqn(state) _, action = torch.max(q_values, 1) return action.item() def learn(self, state, action, reward, next_state, done): self.optimizer.zero_grad() q_values = self.dqn(state) q_value = q_values.gather(1, action.unsqueeze(1)).squeeze(1) next_q_values = self.dqn(next_state) next_q_value, _ = torch.max(next_q_values, 1) expected_q_value = reward + 0.99 * next_q_value * (1 - done) loss = self.loss_fn(q_value, expected_q_value.detach()) loss.backward() self.optimizer.step() ``` 这个代码定义了一个DQN和一个Agent。DQN定义了一个三层的全连接神经网络,用于估计每个可能动作的价值函数。Agent包含一个DQN对象以及一个优化器和损失函数,用于实现强化学习算法中的学习过程。act方法用于根据当前状态选择一个动作,learn方法用于根据当前状态、动作、奖励、下一个状态和是否结束来更新神经网络的参数,以最大化累积奖励。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值