'''
练习
练习1:定义一个类描述数字时钟。
参考答案:
'''
from time import sleep
class Clock(object) :
def __init__(self,hour=0,minute=0,second=0):
self._second=second
self._minute=minute
self._hour=hour
def run(self):
self._second += 1
if self._second == 60 :
self._second = 0
self._minute +=1
if self._minute == 60 :
self._minute = 0
self._hour +=1
if self._hour == 24:
self._hour = 0
def show(self):
return '%02d.%02d.%02d'%(self._hour,self._minute,self._second)
def main():
clock = Clock(23, 59, 58)
while True :
print(clock.show())
sleep(1)
clock.run()
if __name__ == '__main__':
main()
return 和 print 区别 加入是 print 会输出但是返回值为None
练习2:定义一个类描述平面上的点并提供移动点和计算到另一个点距离的方法。
参考答案:
from math import sqrt
class Point(object):
def __init__(self, x=0, y=0):#初始化所有值后面会解释_init_
"""初始化方法
:param x: 横坐标
:param y: 纵坐标
"""
self.x = x #属性定值
self.y = y
def move_to(self, x, y):
"""移动到指定位置
:param x: 新的横坐标
"param y: 新的纵坐标
"""
self.x = x
self.y = y
def move_by(self, dx, dy):
"""移动指定的增量
:param dx: 横坐标的增量
"param dy: 纵坐标的增量
"""
self.x += dx
self.y += dy
def distance_to(self, other):
"""计算与另一个点的距离
:param other: 另一个点
"""
dx = self.x - other.x#自动调用_init_ other.x = x
dy = self.y - other.y
return sqrt(dx ** 2 + dy ** 2)
def __str__(self):#返回对象一个值与Point对应 可看str的值
return '(%s, %s)' % (str(self.x), str(self.y))
def main():
p1 = Point(3, 5)
p2 = Point()
print(p1)
print(p2)
p2.move_by(-1, 2)#两种方法一种直接移动到改点,一种是经过横纵坐标加减
print(p2)
print(p1.distance_to(p2)) #p1.x p2.x
if __name__ == '__main__':
main()
引用知乎的
'''
作者:匿名用户
链接:https://www.zhihu.com/question/46973549/answer/103805810
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。比如:
class testClass:
def __init__(self, name, gender): //定义 __init__方法,这里有三个参数,这个self指的是一会创建类的实例的时候这个被创建的实例本身(例中的testman),你也可以写成其他的东西,比如写成me也是可以的,这样的话下面的self.Name就要写成me.Name。
self.Name=name //通常会写成self.name=name,这里为了区分前后两个是不同的东东,把前面那个大写了,等号左边的那个Name(或name)是实例的属性,后面那个是方法__init__的参数,两个是不同的)
self.Gender=gender //通常会写成self.gender=gender
print('hello') //这个print('hello')是为了说明在创建类的实例的时候,__init__方法就立马被调用了。
testman = testClass('neo,'male') //这里创建了类testClass的一个实例 testman, 类中有__init__这个方法,在创建类的实例的时候,就必须要有和方法__init__匹配的参数了,由于self指的就是创建的实例本身,self是不用传入的,所以这里传入两个参数。这条语句一出来,实例testman的两个属性Name,Gender就被赋值初使化了,其中Name是 neo,Gender 是male。
看图的运行结果。我也刚学,大学接触过编程,献丑了,就匿名了。
'''