我正在通过一本书学习Python,其中一个问题是创建一个名为Country的类,其中包含如下所示的参数,然后创建一个名为is_larger的方法,该方法将返回一个布尔值,指示是否考虑到这个代码,第一个国家的面积比另一个国家大:
>>> canada = Country( 'Canada', 34482779, 9984670)
>>> usa = Country( 'United States of America' , 313914040, 9826675)
>>> canada. is_larger(usa)
True
以下是本书的解决方案:
class Country():
def __init__(self, name, population, area):
""" (Country, str, int, int)
A new Country named name with population people and area area.
>>> canada = Country('Canada', 34482779, 9984670)
>>> canada.name
'Canada'
>>> canada.population
34482779
>>> canada.area
9984670
"""
self.name = name
self.population = population
self.area = area
def is_larger(self, other):
""" (Country, Country) -> bool
Return whether this country is larger than other.
>>> canada = Country('Canada', 34482779, 9984670)
>>> usa = Country('United States of America', 313914040, 9826675)
>>> canada.is_larger(usa)
True
>>> usa.is_larger(canada)
False
"""
return self.area > other.area
我可以在看到答案后申请,但我不理解这个过程,而且我非常希望完全理解这些代码。 方法is_larger包含两个参数,一个是 self 。该方法不应该是:
def is_larger(self, country1, country2):
如何将对象用作 self 参数?
如果我的问题令人困惑,请告诉我,我会尝试澄清我头脑中发生的事情。
答案 0 :(得分:2)
电话
canada.is_larger(usa)
可以被认为是
的语法糖Country.is_larger(canada, usa)
参数self
(实际上,该方法的第一个参数,无论您的名称是什么)都是指调用方法的对象。在这里,无论您使用的是第一种表单还是第二种表单self == canada
和other == usa
。