gpt4 book ai didi

Python编程: Classes

转载 作者:行者123 更新时间:2023-12-01 07:38:12 25 4
gpt4 key购买 nike

我刚刚开始学习Python,想要更好地理解类。这是我教科书中的两个例子,第一个我很好理解,但是我不明白第二个例子中“ self ”和“其他”的使用。

有人可以用外行术语为我逐步分解代码并向我解释发生了什么吗?我想完全掌握如何使用类方法中的参数。将不胜感激任何帮助,我真的很想掌握这个!谢谢。

class Album(object):
def __init__(self, name, player, year, tracks):
self.name = name
self.player = player
self.year = year
self.tracks = tracks

def num_years_ago(self, current_year):
"Return the number of years since album was released"
return current_year - self.year



from math import gcd

class Fraction(object):
def __init__(self, num, denom):
g = gcd(num, denom)
self.num = num//g
self.denom = denom//g

def __add__(self, other):
return Fraction(self.num * other.denom + self.denom * other.num,
self.denom * other.denom)

def __eq__(self, other):
return self.num == other.num and self.denom == other.denom

最佳答案

问得好!我很高兴你能伸出援手来更好地理解它,而不是像我一开始那样随波逐流,哈哈!

你基本上可以把类想象成一个小机器人。机器人具有一些特定的特征,例如面孔和世界统治计划(属性),并且机器人可以做诸如世界统治(功能)之类的事情。

如果我们将您的第一个类想象成一个小机器人:

class Album(object):
def __init__(self, name, player, year, tracks):
self.name = name
self.player = player
self.year = year
self.tracks = tracks

def num_years_ago(self, current_year):
"Return the number of years since album was released"
return current_year - self.year

我们的机器人的名字是Album。所以专辑有 self 意识,它也知道它的名字、制作者(“播放器”)、制作年份以及某些轨道上的一些恶心的节拍。机器人可以做一些数学计算并告诉你它是多久前制造的。

用Python语言来说,这意味着您可以通过使用Album()初始化Album对象来“构建”Album。然而,专辑需要了解自己的一些事情!因此,您必须在该构造函数中包含一些参数。看起来像 Album("Dirty Computer", "Janelle Monae", 2018, "Pynk")。 (您不需要包含“self”,因为相册已经知道它是一个机器人!)

为了分解构造函数,由于您已经为 Album 提供了一些有关其自身的信息,因此它需要真正内部化这些内容,因此您将 Album 的属性设置为您告诉它的属性。这就是 self.name = nameself.player = playerself.year =yearself.tracks =轨道行是用于。

现在,如果我问它“Album,你在这个地球上存在了多久?”,它可能会认为“比人类能够理解的时间还要长”,但它肯定会用 num_years_ago 函数回答。要调用此方法,由于您必须有一个机器人来提出这个问题,因此它看起来像 exampleRobot.num_years_ago(2019)。点运算符 (.) 基本上是一种指示从机器人调用 num_years_ago 函数的方法。

在代码中,这可能看起来像

cindy = Album("Dirty Computer", "Janelle Monae", 2018, "Pynk")
age = cindy.num_years_ago(2019)
print(age)

希望这有帮助!请随时在评论中提出问题,我会予以澄清!

关于Python编程: Classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56873893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com