python 21 --面向对象(2)-- 类的方法和属性(上)

类的方法

类的方法实际上是为类的能力建模的,那么定义类的方法让类具有一定的能动性。在类外部调用该类的方法就可以完成相应的功能,or 改变类的状态 or 达到其他目的

类中的方法和调用与函数定义和调用方式基本相同,区别有:

  • 方法的第一个参数必须是 self,而且不能省略
  • 方法的调用需要实例化类,并且以实例名.方法名(参数列表)的形式调用
  • 整体进行一个单位的缩进,表示其属于类
>>> class smplClass:
...     def info(self):
...             print('my class')
...     def mycacl(self,x,y):
...             return x+y
... 
>>> sc = smplClass()
>>> print('use info')
use info
>>> sc.info()
my class
>>> print('use mycacl')
use mycacl
>>> print(sc.mycacl(2,3))
5
在 python 语言的类定义中,可以定义一个特殊的构造方法,即__init__()方法,用于在类实例化时初始化相关数据,如果在这个方法中有相关参数,在初始化时就必须提供

⚠️:这个函数 init 前后分别是两个下划线

>>> class demoInit:
...     def __init__(self,x,y=0):
...             self.x = x
...             self.y = y
... 
>>> dia = demoInit(3)
>>> print('dia.x + dia.y')
dia.x + dia.y
>>> print(dia.x+dia.y)
3
>>> dib = demoInit(3,7)
>>> print('dib.x + dib.y')
dib.x + dib.y
>>> print(dib.x + dib.y)
10

读到这里,你有木有发现这个 self 就是C++里面的 this 指针嘛···

类中的方法既可以调用本类中的方法,也可以调用全局函数来完成相关任务。调用全局函数和面向过程的调用方式相同,而调用本类中应这样:

self.<方法名>(参数列表)

调用本类中的方法时,提供的参数列表也不应该包括 self

>>> def coord_chng(x,y):
...     return (abs(x),abs(y))
... # 定义一个全局函数,x,y求绝对值
... 
>>> class Ant:
...     def __init__(self,x=0,y=0):
...             self.x = x
...             self.y = y
...             self.disp_point()
...     def move(self,x,y):
...             x,y = coord_chng(x,y)
...             self.edit_point(x,y)
...             self.disp_point()
...     def edit_point(self,x,y):
...             self.x = x
...             self.y = y
...     def disp_point(self):
...             print('instant time position: (%d,%d)'%(self.x,self.y))
... 
>>> ant_a = Ant()
instant time position: (0,0)
>>> ant_a.move(2,4)
instant time position: (2,4)
>>> ant_a.move(-9,6)
instant time position: (9,6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值