我刚刚开始学习Python,想更好地理解类。 我的课本里有两个例子,第一个我理解得很好,但是第二个例子中我不理解“自我”和“他者”的用法。你知道吗
有没有人能用外行的语言,一步一步地给我解释一下代码的来龙去脉?我想完全掌握如何在类的方法中使用参数。如果有任何帮助我都会很感激的,我真的很想掌握这个窍门!谢谢。你知道吗
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
好问题!我很高兴你能伸出手来更好地理解它,而不是像我一开始那样随波逐流,哈哈!你知道吗
你基本上可以把类想象成一个小机器人。机器人有一些特定的特征,比如脸和世界控制计划(属性),机器人可以做一些事情,比如世界控制(功能)。你知道吗
如果我们把你的第一节课想象成一个小机器人:
我们机器人的名字是
Album
。所以这张专辑有一种自我意识,它也知道自己的名字,是谁制作的(“播放器”),制作年份,还有一些歌曲的病态节拍。机器人可以做一些数学运算,告诉你它是多久前制造的。你知道吗在Pythonic语言中,这意味着您可以通过使用
Album()
初始化相册对象来“构建”相册。然而,专辑需要了解自己的东西!所以必须在构造函数中包含一些参数。看起来像Album("Dirty Computer", "Janelle Monae", 2018, "Pynk")
。(你不需要包含“self”,因为相册已经知道它是机器人了!)你知道吗为了分解构造器,既然你已经给了Album一些关于它自己的知识,它就需要真正的内在化,所以你把Album的属性设置为你告诉它的属性。这就是
self.name = name
、self.player = player
、self.year = year
、self.tracks = tracks
行的用途。你知道吗现在如果我问它“你在这个地球上多久了,专辑?”,它可能认为“比人类所能理解的要长”,但它肯定会用
num_years_ago
函数来回答。要说这个,因为你必须有一个机器人来问这个问题,它看起来像exampleRobot.num_years_ago(2019)
。点运算符(.
)基本上是一种表示从robot调用num_years_ago
函数的方法。你知道吗在代码中,这可能看起来像
希望这有帮助!请随意在评论中提出问题,我会澄清的!你知道吗
__add__
和__eq__
是运算符。 这个想法只是通过经典的python操作符来操作您的实例。你知道吗__add__
使您能够对a和b两个Fraction
实例执行a + b
。__eq__
使您能够比较两个分数,如相关问题 更多 >
编程相关推荐