我刚刚开始学习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发布于 2019-07-03 16:21:33
问得好!我很兴奋,你是为了更好地理解它,而不是像我在一开始那样漂浮在一起,哈哈!
你基本上可以把课堂想象成一个小机器人。机器人具有人脸和世界控制计划(属性)等特定特征,机器人可以实现世界控制(功能)等功能。
如果我们像一个小机器人一样想到你的第一堂课:
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。所以专辑有一种自我感,它也知道自己的名字,是谁制作的(“播放器”),它制作的年份,以及一些曲目上的一些恶心的节拍。机器人可以做一些计算,告诉你它是多久前制造的。
在Pythonic this中,这意味着您可以通过使用Album()初始化相册对象来“构建”相册。然而,专辑需要了解自己的东西!所以你必须在构造函数中包含一些参数。那看起来像Album("Dirty Computer", "Janelle Monae", 2018, "Pynk")。(你不需要包含"self“,因为专辑已经知道它是机器人了!)
为了分解构造函数,因为您已经给了相册一些东西来了解它本身,它需要真正地内化它,所以您将专辑的属性设置为您告诉它的属性。这就是self.name = name、self.player = player、self.year = year和self.tracks = tracks行的作用所在。
现在,如果我问它“你在这个地球上多久了,专辑?”,它可能会认为“超过人类所能理解的时间”,但它肯定会用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)希望这能有所帮助!请随意删除评论中的问题,我会澄清的!
发布于 2019-07-03 16:10:40
__add__和__eq__ _是运算符。这样做的目的只是通过经典的python操作符来操作您的实例。
__add__使您能够使用Fraction的a和b两个实例执行a + b。__eq__使您能够比较两个分数,如
a= Fraction(3,4)
b= Fraction(5,7)
if a==b:
return "OMG it equal"https://stackoverflow.com/questions/56873893
复制相似问题